2016-03-25 2 views
-1

A1 = ac_tree_birch_NewYork_ext複数のアンダースコアでテキストと値の変化長さを分離する方法

A2 = bc_animal_dog_Washington_desの長さを変化させることがあるので、私は、「_」によって、細胞内のテキストを分離するにはどうすればよい

セル値。私は、列にテキストではなく、数式を使用したいと思います。

おかげ

+0

私は式を使用することを好むだろう 'フラッシュFill' – radiocontrolled

+0

を使用して見てみましょう。それについてのアイデア? – scannon

+0

IF、LEN、FIND、RIGHT、LEFT、およびSUBSTITUTEの組み合わせを使用できます。 – radiocontrolled

答えて

1

これはおそらくFlash Fill(エクセル2013+)を介して行うことができます。

データの最初の行については、右に続くセルに期待される結果を入力します。これは、分割データをする方法である:

image

そして、出力データの最初のセルを選択し、Flashがリボンから塗りつぶしクリック:

image

は、残りの列のためにこれを行います。これは、元のデータの中にExcelで認識されたパターンに基づいて、列を記入します:

image

+0

おそらくxl2013で[Flash Fill](https://support.office.com/en-us/article/Flash-Fill-3fb96b4a-ee83-4493-af45-6522324477bd)が導入されたことに注意してください。 – Jeeped

+0

ありがとう@jeeped、回答に追加 – radiocontrolled

0

VBAソリューションが許容される場合は、VBA Split機能のラッパーを書くことができます。

Public Function Split2(s As String) As String() 
    Split2 = Split(s, "_") 
End Function 

は、その後、あなたのワークシートに、選択(例えば)セルB1:F1は、(CTRL-SHIFT-ENTER)配列関数として

=Split2(A1) 

を入力し、あなたのデータが出てきます。

希望に役立ちます。

3

使用SUBSTITUTE functionスペースの多数(元の文字列の一般的に長さ全体)へのすべての下線(例えばCHAR(95))を変更し、MID functionを埋め込む片を剥離します。 TRIMIFERRORの「ラッパー」で終わります。

としてB1において

=IFERROR(TRIM(MID(SUBSTITUTE($A1, CHAR(95), REPT(CHAR(32), LEN($A1))), (COLUMN(A:A)-1)*LEN($A1)+1, LEN($A1))), TEXT(,)) 

右および下の両方を埋めます。

string_pieces

+0

ありがとう!それは完璧に働いた。 – scannon

関連する問題