Dizeden Excel özeti alt dize


22

Değişken uzunlukta bir alt dizgiyi bir dizgeden ayıklamanın bir yolunu arıyorum.

Hücrelerim şuna benzeyecek:

ABC - DEF
ABCDE - DEF
ABCD - ABC

Dizeyi -karaktere bölmek istiyorum , böylece hücreler:

ABC
ABCDE
ABCD

Bu VBScript ile değil bir formülle yapılmalıdır.

Excel 2010 kullanıyorum

DÜZENLE

Veri kümesinin her zaman -karakteri içermediğini , yani değişiklik olmaması gerektiğini öğrendim .

Yanıtlar:


26

Bu sorun iki aşamaya ayrılabilir:

  1. İstediğiniz bölünmüş karakterin dizgisinde dizini bulun (bu durumda, "-"veya " - ").
  2. Önek alt dizgesini orijinal metnin başından bölme dizinine alın.

FINDVe SEARCHkomutlar her verilen dizin dönecekti needlebir yer haystack( FINDküçük harf duyarlıdır, SEARCHküçük harfe duyarlı değildir ve joker sağlar). Bunu göz önüne alındığında, biz var:

FIND(search_text, source_cell, start_index)

veya bu durumda:

FIND(" - ", A1, 1)

Dizine sahip olduğumuzda source_cell"split" yapmak için ön ekine ihtiyacımız var . MIDSadece bu mu:

MID(source_cell, start_index, num_characters)

İkisini birlikte koyarak, biz:

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

A1 metin sahip bir ABC - DEFverir ABC.


7

Andrew'un düzenlemenize dayanarak cevabını genişleterek: bölünecek karakter dizesini bulmak için, FINDişlevi kullanıyoruz . Eğer FINDverilen dizeyi bulmak için başarısız, bir döner #VALUE?hatası. Bu nedenle, bu değeri kontrol etmemiz ve bunun yerine alternatif bir değer kullanmamız gerekir.

Aşağıdakiler de dahil olmak üzere herhangi bir hata değerini kontrol etmek için #VALUEşu ISERRORişlevi kullanırız :

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

FINDişlev A1 hücresindeki "-" dizesini bulamazsa bu doğru olacaktır . Bu yüzden hangi değeri kullanacağımıza karar vermek için onu kullanıyoruz:

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

Bu, find komutu bir hata verirse, değiştirilmemiş A1 hücresini kullanın diyor. Aksi takdirde, MIDAndrew'un sağladığı işlevi yapın.


2

Cevabınız için @AndrewColeson teşekkür ederiz.

Dolayısıyla, sadece buna eklemek için, eğer sağ taraftaki her şeyi istiyorsanız -, bu kodu kullanın:

= ARA (A1, UZ (B1) + 3, UZ (A1))

Hangisi:

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

Bu kod, sonradan tanımsız sayıda karakteriniz varsa harikadır -.

Örneğin:

Eğer varsa:

ABC - DEFG
AB - CDEFGH
...

bu hile de =MID(a1,FIND("-",a1)+1,LEN(a1))"hücresel olmayan" referanslar olmadan da yapılabilir )
Mikey

1

5. karakteri soldan Excel'deki bir metin dizesinden çıkarmak için çok basit bir yol:

Karakter dizesinin ABCDEFGHIJbir Excel Elektronik Sayfasındaki A1 hücresinde ve ardından aşağıdaki formüle kaydedildiğini varsayalım.

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

dizedeki soldan 5. karakteri üretir, yani E.


( MIDExcel'de işlev yok mu? Eski Visual Basic'te var olduğundan eminim ve bunun gibi bir şey olurdu =MID(A1, 5, 1))
Valmiky Arquissandas

0

Aşağıdaki formül bir alt dizgiyi [TEXTCOLUMN_1]

Örneğin: Eğer dönüştürmek istiyorsanız -./thumb/hello.jpgiçin thumb/hello.jpgaşağıdaki formülü kullanın

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

[TEXTCOLUMN_1]= değiştirmek istediğiniz sütun ismi [NUM_OF_CHARACTERS]= sol taraftan kaldırmak istediğiniz karakter sayısı

Sağ taraftan kaldırmak istiyorsanız, aşağıdakileri kullanın.

=SUBSTITUTE([TEXTCOLUMN_1],RIGHT([TEXTCOLUMN_1],[NUM_OF_CHARACTERS]),)
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.