2011-11-17 13:40:49 +0000 2011-11-17 13:40:49 +0000
22
22

Excel wyodrębnia podłańcuch z ciągu znaków

Szukam sposobu na wyodrębnienie podłańcucha o zmiennej długości z ciągu znaków.

Moje komórki będą wyglądały mniej więcej tak:

ABC - DEF
ABCDE - DEF
ABCD - ABC

Chcę podzielić ciąg przy znaku -, więc komórki staną się:

ABC
ABCDE
ABCD

To powinno być wykonane przy pomocy formuły a nie VBScript.

Używam Excel 2010

EDIT

Stwierdziłem, że zbiór danych nie zawsze zawiera znak -, czyli nie powinno być żadnych zmian.

Odpowiedzi (5)

26
26
26
2011-11-17 13:51:09 +0000

Ten problem może być podzielony na dwa kroki:

  1. Znajdź w ciągu znaków indeks pożądanego przez Ciebie znaku dzielenia (w tym przypadku "-" lub " - ").
  2. Uzyskaj podłańcuch prefiksu od początku oryginalnego tekstu do indeksu podziału.

Polecenia FIND i SEARCH każde z nich zwróciłoby indeks danego needle w haystack (FIND jest wrażliwe na wielkość liter, SEARCH jest niewrażliwe na wielkość liter i pozwala na symbole wieloznaczne). Biorąc to pod uwagę, mamy:

FIND(search_text, source_cell, start_index)

lub w tym przypadku:

FIND(" - ", A1, 1)

Gdy mamy już indeks, potrzebujemy przedrostka source_cell, aby wykonać “podział”. MID właśnie to robi:

MID(source_cell, start_index, num_characters)

Składając oba razem, mamy:

=MID(A1,1,FIND(" - ",A1,1))

z A1 mającym tekst ABC - DEF daje ABC.

7
7
7
2011-11-17 15:22:44 +0000

Rozszerzając odpowiedź Andrew na podstawie twojej edycji: aby znaleźć ciąg znaków do podziału, używamy funkcji FIND. Jeśli FIND nie zlokalizuje podanego ciągu znaków, zwraca błąd #VALUE?. Będziemy więc musieli sprawdzić, czy nie ma tej wartości i zamiast niej użyć wartości zastępczej.

Do sprawdzenia dowolnej wartości błędu, w tym #VALUE, używamy funkcji ISERROR, a więc:

=ISERROR(FIND(" - ", A1, 1))

która będzie prawdziwa, jeśli funkcja FIND nie może znaleźć ciągu “ - ” w komórce A1. Wykorzystamy to, aby zdecydować, jakiej wartości użyć:

=IF(ISERROR(FIND(" - ", A1, 1)), A1, MID(A1, 1, FIND(" - ", A1, 1)))

To mówi, że jeśli polecenie find zwróci błąd, użyj niezmodyfikowanej komórki A1. W przeciwnym razie wykonaj funkcję MID, którą Andrew już dostarczył.

2
2
2
2014-08-11 08:59:14 +0000

Dziękuję @AndrewColeson za twoją odpowiedź.

Więc tylko po to, aby dodać do tego, jeśli chcesz, aby wszystko było po prawej stronie -, użyj tego kodu:

=MID(A1,LEN(B1)+3,LEN(A1))

Co to jest:

A1 = ABC - DEF
B1 = =MID(A1,1,FIND(" - ",A1,1))
    B1 = ABC
Therefore A1 = DEF

Ten kod jest świetny, jeśli masz niezdefiniowaną liczbę znaków po -.

Na przykład:

Jeśli masz:

ABC - DEFG
AB - CDEFGH
...
1
1
1
2014-08-19 22:50:39 +0000

Oto bardzo prosty sposób na wyodrębnienie piątego znaku od lewej z ciągu tekstowego w programie Excel:

Załóżmy, że ciąg znaków ABCDEFGHIJ jest przechowywany w komórce A1 w arkuszu kalkulacyjnym programu Excel, wówczas następująca formuła

=RIGHT(LEFT(A1,5),1)

daje 5. znak od lewej w ciągu, czyli E.

0
0
0
2017-05-02 10:15:45 +0000

Poniższa formuła usunie podłańcuch z [TEXTCOLUMN_1]

np.: jeśli chcesz zamienić -./thumb/hello.jpg na thumb/hello.jpg to użyj następującej formuły

=SUBSTITUTE([TEXTCOLUMN_1],LEFT([TEXTCOLUMN_1],[NUM_OF_CHARACTERS]),)

[TEXTCOLUMN_1] = nazwa kolumny, którą chcesz zmienić[NUM_OF_CHARACTERS] = ilość znaków z lewej strony, które chcesz usunąć

Jeśli chcesz usunąć z prawej strony to użyj następującej formuły

=SUBSTITUTE([TEXTCOLUMN_1],RIGHT([TEXTCOLUMN_1],[NUM_OF_CHARACTERS]),)