Note: The other languages of the website are Google-translated. Back to English

Jak zwrócić wiele wartości wyszukiwania w jednej komórce oddzielonej przecinkami?

W programie Excel możemy zastosować funkcję WYSZUKAJ.PIONOWO, aby zwrócić pierwszą dopasowaną wartość z komórek tabeli, ale czasami musimy wyodrębnić wszystkie pasujące wartości, a następnie oddzielić je określonym separatorem, takim jak przecinek, myślnik itp. W jednym komórka, jak pokazano na poniższym zrzucie ekranu. Jak możemy uzyskać i zwrócić wiele wartości wyszukiwania w jednej komórce oddzielonej przecinkami w programie Excel?

doc zwraca wiele wartości oddzielonych przecinkami 1

Zwróć wiele wartości wyszukiwania w jednej komórce oddzielonej przecinkami za pomocą funkcji zdefiniowanej przez użytkownika

Zwróć wiele wartości wyszukiwania w jednej komórce oddzielonej przecinkami za pomocą Kutools for Excel


Zwróć wiele wartości wyszukiwania w jednej komórce oddzielonej przecinkami za pomocą funkcji zdefiniowanej przez użytkownika

Zwykle nie ma bezpośredniego sposobu, abyśmy wyodrębnili i zwrócili wiele pasujących wartości i oddzielonych przecinkami w jednej komórce, tutaj możesz utworzyć funkcję zdefiniowaną przez użytkownika, aby rozwiązać to zadanie, wykonaj następujące czynności:

1. Przytrzymaj ALT + F11 klawisze, aby otworzyć Microsoft Visual Basic for Applications okno.

2, Kliknij wstawka > Modułi wklej następujący kod w Moduł Okno.

Kod VBA: Zwróć wiele wartości wyszukiwania do jednej komórki oddzielonej przecinkami

Function SingleCellExtract(LookupValue As String, LookupRange As Range, ColumnNumber As Integer, Char As String)
'Updateby Extendoffice
    Dim I As Long
    Dim xRet As String
    For I = 1 To LookupRange.Columns(1).Cells.Count
        If LookupRange.Cells(I, 1) = LookupValue Then
            If xRet = "" Then
                xRet = LookupRange.Cells(I, ColumnNumber) & Char
            Else
                xRet = xRet & "" & LookupRange.Cells(I, ColumnNumber) & Char
            End If
        End If
    Next
    SingleCellExtract = Left(xRet, Len(xRet) - 1)
End Function

3. Następnie zapisz ten kod i zamknij okno Module, wróć do arkusza i wprowadź następującą formułę: = SingleCellExtract (D2; A2: B15,2; ",") do pustej komórki, dla której chcesz zwrócić wynik. A następnie naciśnij Wchodzę klucz, aby uzyskać wynik, patrz zrzut ekranu:

doc zwraca wiele wartości oddzielonych przecinkami 2

Uwagi: W powyższym wzorze:

D2: wskazuje wartości komórek, które chcesz wyszukać;

A2: B15: to zakres danych, z którego chcesz pobrać dane;

2: liczba 2 to numer kolumny, do której ma zostać zwrócona pasująca wartość;

,: przecinek jest separatorem, który chcesz oddzielić wiele wartości.

Możesz je zmienić według swoich potrzeb.


Zwróć wiele wartości wyszukiwania w jednej komórce oddzielonej przecinkami za pomocą Kutools for Excel

Jeśli masz Kutools dla programu Excel, to zadanie nie będzie już problemem. Plik Zaawansowane wiersze łączenia narzędzie może pomóc w połączeniu wszystkich względnych wartości na podstawie kolumny.

Kutools dla programu Excel : z ponad 300 poręcznymi dodatkami Excela, które można wypróbować bez ograniczeń w ciągu 30 dni

Po zainstalowaniu Kutools dla programu Excelwykonaj następujące czynności:

1. Wybierz zakres danych, w którym chcesz połączyć wszystkie pasujące wartości na podstawie kolumny.

2, Kliknij Kutools > Połącz i podziel > Zaawansowane wiersze łączeniazobacz zrzut ekranu:

3, w Połącz wiersze na podstawie kolumny kliknij nazwę kolumny, na podstawie której chcesz połączyć, a następnie kliknij Główny klucz przycisk, zobacz zrzut ekranu:

doc zwraca wiele wartości oddzielonych przecinkami 4

4. Następnie kliknij nazwę innej kolumny, dla której chcesz połączyć dopasowane wartości, i kliknij Połączyć aby wybrać jeden separator do oddzielenia połączonych wartości, zobacz zrzut ekranu:

doc zwraca wiele wartości oddzielonych przecinkami 5

5. Następnie kliknij OK przycisk, wszystkie odpowiednie komórki o tej samej wartości zostały połączone w jedną komórkę, która jest oddzielona przecinkiem, patrz zrzuty ekranu:

doc zwraca wiele wartości oddzielonych przecinkami 6 2 doc zwraca wiele wartości oddzielonych przecinkami 7

Kliknij, aby dowiedzieć się więcej szczegółów na temat tego narzędzia Zaawansowane łączenie wierszy…

Pobierz i bezpłatną wersję próbną Kutools dla programu Excel teraz!


Demo: Zwróć wiele wartości wyszukiwania w jednej komórce oddzielonej przecinkami za pomocą Kutools for Excel

Kutools dla programu Excel: z ponad 300 poręcznymi dodatkami do programu Excel, które można wypróbować bez ograniczeń w ciągu 30 dni. Pobierz i bezpłatną wersję próbną teraz!

Najlepsze narzędzia biurowe

Kutools dla programu Excel rozwiązuje większość problemów i zwiększa produktywność o 80%

  • Ponowne użycie: Szybko włóż złożone wzory, wykresy i wszystko, czego używałeś wcześniej; Szyfruj komórki z hasłem; Utwórz listę mailingową i wysyłaj e-maile ...
  • Pasek Super Formula (łatwo edytować wiele wierszy tekstu i formuły); Układ do czytania (łatwe odczytywanie i edytowanie dużej liczby komórek); Wklej do filtrowanego zakresu...
  • Scal komórki / wiersze / kolumny bez utraty danych; Podziel zawartość komórek; Połącz zduplikowane wiersze / kolumny... Zapobiegaj zduplikowanym komórkom; Porównaj zakresy...
  • Wybierz Duplikat lub Unikalny Wydziwianie; Wybierz puste wiersze (wszystkie komórki są puste); Super Find i Fuzzy Find w wielu zeszytach ćwiczeń; Losowy wybór ...
  • Dokładna kopia Wiele komórek bez zmiany odwołania do formuły; Automatyczne tworzenie odniesień do wielu arkuszy; Wstaw punktory, Pola wyboru i nie tylko ...
  • Wyodrębnij tekst, Dodaj tekst, Usuń według pozycji, Usuń przestrzeń; Tworzenie i drukowanie podsumowań stronicowania; Konwertuj zawartość komórek i komentarze...
  • Super filtr (zapisz i zastosuj schematy filtrów do innych arkuszy); Zaawansowane sortowanie według miesiąca / tygodnia / dnia, częstotliwości i innych; Specjalny filtr pogrubieniem, kursywą ...
  • Połącz skoroszyty i arkusze robocze; Scal tabele na podstawie kluczowych kolumn; Podziel dane na wiele arkuszy; Konwersja wsadowa xls, xlsx i PDF...
  • Ponad 300 zaawansowanych funkcji. Obsługuje Office / Excel 2007-2021 i 365. Obsługuje wszystkie języki. Łatwe wdrażanie w przedsiębiorstwie lub organizacji. Pełne funkcje 30-dniowa bezpłatna wersja próbna. 60-dniowa gwarancja zwrotu pieniędzy.
karta kte 201905

Karta Office wprowadza interfejs z zakładkami do pakietu Office i znacznie ułatwia pracę

  • Włącz edycję i czytanie na kartach w programach Word, Excel, PowerPoint, Publisher, Access, Visio i Project.
  • Otwieraj i twórz wiele dokumentów w nowych kartach tego samego okna, a nie w nowych oknach.
  • Zwiększa produktywność o 50% i redukuje setki kliknięć myszką każdego dnia!
officetab dół
Sortuj komentarze według
Komentarze (16)
Znamionowy 5 z 5 · 2 oceny
Ten komentarz został zminimalizowany przez moderatora na stronie
Gdy mam zamiar wkleić i zapisać moduł, pojawia się komunikat, że znaczna utrata funkcjonalności sprawdzania zgodności
Ten komentarz został zminimalizowany przez moderatora na stronie
Dzięki za ten post. Czy wiesz, jak mógłbym manipulować dwiema oddzielnymi liczbami całkowitymi, które to tworzy. Załóżmy na przykład, że funkcja '=SingleCellExtract' generuje teraz (1 , 2). Czy istnieje sposób na umieszczenie obok komórki, która to robi (1+5 , 2+5)?
Ten komentarz został zminimalizowany przez moderatora na stronie
To działa, ale znacznie spowalnia mój Excel! Jakieś wskazówki, które pomogą przyspieszyć?
Ten komentarz został zminimalizowany przez moderatora na stronie
To po prostu nie działa. Nie mogłem go uruchomić we własnej aplikacji, więc skopiowałem/wkleiłem vba i formułę i za każdym razem zwracał błąd
Ten komentarz został zminimalizowany przez moderatora na stronie
dziękuję, po pierwsze udało mi się to uruchomić bez spowolnienia wydajności. Używam wartości zamiast tekstu, więc moje pytanie brzmi, że chcę przywrócić wszystkie te, które mają mniej niż 19 punktów na liście. Czy ekstrakt z pojedynczej komórki może w tym celu działać, czy musi to być konkretna wartość?
Ten komentarz został zminimalizowany przez moderatora na stronie
Polecenie VB przerywa się, gdy zakres jest dłuższy niż 154 wiersze (np. :B154)....
Ten komentarz został zminimalizowany przez moderatora na stronie
Pojawia się błąd, jeśli zwiększysz rozmiar tablicy
Ten komentarz został zminimalizowany przez moderatora na stronie
Gdy 2 kryteria są zgodne, zwróć wiele wartości wyszukiwania w jednej komórce oddzielonej przecinkami
A2=B2 Następnie wynik z zakresu przez "SingleCellExtract" - Proszę.......
Ten komentarz został zminimalizowany przez moderatora na stronie
Good Morning,

kod VBA działał idealnie z moim arkuszem roboczym, dość przejrzysty i prosty, jednak próbowałem znaleźć sposób, aby powiedzieć programowi Excel, aby zwracał tylko unikalne wartości. Czy byłoby to możliwe przy użyciu tego samego kodu?
Znamionowy 5 z 5
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć,

Potrzebuję dokładnego kodu weryfikacyjnego dla wielu wartości oddzielonych przecinkiem i spacją dla każdej wartości.

Przykład:
Lucy, Tom, Nicol, Akash, Apple

Proszę powtórzyć, jeśli masz jakieś sugestie.
Znamionowy 4.5 z 5
Ten komentarz został zminimalizowany przez moderatora na stronie
Witam, Manikanta
Aby oddzielić wiele wartości przecinkiem i spacją, wystarczy dodać spację za przecinkiem, zmień formułę w ten sposób: =WyciągPojedynczejKomórki(D2,A2:B15,2,",").
Proszę spróbować, mam nadzieję, że może ci to pomóc!
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć Skyyang,

Dziękuję za Twoją powtórkę!

Próbowałem już w ten sam sposób, ale w wartości komórki ostatni dodatkowy przecinek (,) podany poniżej jest przykładem.

Lucy, Tom, Nicol, Akash, Apple,

To nie zadziała dla pliku Json, więc chcę wartości oddzielone przecinkiem i spacją, jak poniżej.

Lucy, Tom, Nicol, Akash, Apple

Dziękuję Ci!
Ten komentarz został zminimalizowany przez moderatora na stronie
Witaj, Manikanta
W takim przypadku możesz zastosować poniższą funkcję zdefiniowaną przez użytkownika:

Function MultipleValues(work_range As Range, criteria As Variant, merge_range As Range, Optional Separator As String = ",") As Variant
Dim outcome As String
On Error Resume Next
If work_range.Count <> merge_range.Count Then
MultipleValues = CVErr(xlErrRef)
Exit Function
End If
For i = 1 To work_range.Count
If work_range.Cells(i).Value = criteria Then
outcome = outcome & Separator & merge_range.Cells(i).Value
End If
Next i
If outcome <> "" Then
outcome = VBA.Mid(outcome, VBA.Len(Separator) + 1)
End If
MultipleValues = outcome
Exit Function
End Function


Po wklejeniu kodu użyj poniższej formuły: =MultipleValues($A$2:$A$15,D2,$B$2:$B$15,", ")

Spróbuj, mam nadzieję, że to ci pomoże!
Jeśli nadal masz inny problem, skomentuj tutaj.
https://www.extendoffice.com/images/stories/comments/comment-skyyang/doc-return-multiple-matching-1.png
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć Skyyang,

To już działa. Dziękuję za szybką odpowiedź.

Jeszcze raz bardzo mi się przyda. Dziękuję za pomoc.

Pozdrowienia,
Manikanta.
Znamionowy 5 z 5
Ten komentarz został zminimalizowany przez moderatora na stronie
No soy programador pero necesito ayuda para que la función de abajo en lugar de devolverme esto

S-01-08-0017->Micro Post 1R, czarny, koniec ze stali nierdzewnej,->4;S-01-08-0057->Micro Post 2R, czarny, koniec ze stali nierdzewnej,->2

me devuelva los valores en lineas diferentes.
S-01-08-0017->Micro Post 1R, czarny, stal nierdzewna -koniec,->4
S-01-08-0057->Micro Post 2R, czarny, stal nierdzewna -koniec,->2

La función es:
Funkcja SingleCellExtract(LookupValue As String, LookupRange As Range, ColumnNumber As Integer, Char As String)
„Aktualizuj do” Extendoffice
Dim I tak długo
Dim xRet jako ciąg
Dla I = 1 do LookupRange.Columns(1).Cells.Count
If LookupRange.Cells(I, 1) = LookupValue Wtedy
Jeśli xRet = "" Wtedy
xRet = LookupRange.Cells(I, ColumnNumber) & Char
Więcej
xRet = xRet & "" & LookupRange.Cells(I, ColumnNumber) & Char
End If
End If
Dalej
SingleCellExtract = Left(xRet, Len(xRet) - 1)
End Function
Ten komentarz został zminimalizowany przez moderatora na stronie
Witaj Yery,
Czy chciałeś podzielić komórkę na wiele wierszy na podstawie znaku średnika?
Jeśli tak, poniższy kod VBA może ci pomóc:
Sub SplitAll()
    Dim xRg As Range
    Dim xRg1 As Range
    Dim xCell As Range
    Dim I As Long
    Dim xAddress As String
    Dim xUpdate As Boolean
    Dim xRet As Variant
    On Error Resume Next
    xAddress = Application.ActiveWindow.RangeSelection.Address
    Set xRg = Application.InputBox("Please select a range", "Kutools for Excel", xAddress, , , , , 8)
    Set xRg = Application.Intersect(xRg, xRg.Worksheet.UsedRange)
    If xRg Is Nothing Then Exit Sub
        If xRg.Columns.Count > 1 Then
            MsgBox "You can't select multiple columns", , "Kutools for Excel"
            Exit Sub
            End If
            Set xRg1 = Application.InputBox("Split to (single cell):", "Kutools for Excel", , , , , , 8)
            Set xRg1 = xRg1.Range("A1")
            If xRg1 Is Nothing Then Exit Sub
                xUpdate = Application.ScreenUpdating
                Application.ScreenUpdating = False
                For Each xCell In xRg
                    xRet = Split(xCell.Value, ";")
                    xRg1.Worksheet.Range(xRg1.Offset(I, 0), xRg1.Offset(I + UBound(xRet, 1), 0)) = Application.WorksheetFunction.Transpose(xRet)
                    I = I + UBound(xRet, 1) + 1
                Next
                Application.ScreenUpdating = xUpdate
            End Sub

Proszę spróbować, mam nadzieję, że może ci to pomóc!
Nie ma tu jeszcze żadnych komentarzy
Zostaw swój komentarz
Publikowanie jako gość
×
Oceń ten post:
0   Postacie
Sugerowane lokalizacje

Bądż na bieżąco

Prawa autorskie © 2009 - www.extendoffice.com. | Wszelkie prawa zastrzeżone. Zasilany przez ExtendOffice, | Mapa strony
Microsoft i logo Office są znakami towarowymi lub zastrzeżonymi znakami towarowymi Microsoft Corporation w Stanach Zjednoczonych i / lub innych krajach.
Chronione przez Sectigo SSL