2017-08-11 10 views
0

前に置いておきたい記述の最後に多量のデータがあります。さまざまな長さのためにテキストが列に作用しないため、必要な結果を得るためにmid/len/left/right/searchの組み合わせを取得する方法を見つけることができませんでした。文字列内の複数のインスタンスが必要な場合があります(Excelの場合)

マイデータは、この(1つのセル内の各ライン)のようである:

TEE BRASS 2"
TEE BRASS 2" ×1"
TEEブラス3" ×2"
TEEブラスDWV 2"
TEE COPPER 1"
TEE銅1" X 1-1/2"
TEE銅1-1/2" X 3/4"

私の最終目標は、ですべての測定を持つことです前部(sti LLつのセル内の各ライン):

2" TEEブラス
2" ×1" TEE BRASS
3" X 2" TEEブラス
2" TEEブラスDWV
1" TEE銅
1 "X 1-1/2" TEE COPPER
1-1/2" X 3/4" TEE COPPER

はかつて私は/文字列一緒にそれをすべて問題なしを連結することができます分離しました。私は基本的には、「すべてのものを取り除いて別の列に入れる方法が必要です.2つまたは3つのインスタンスがある場合は、それぞれの列を個別に、または同じ列のいずれかとする必要があります他の測定値。

私はExcel 2007を実行しています(更新版はすぐに上司に依頼しています...)。

ありがとうございます!

答えて

1

あなたが望むように、この式は、データを解析します:

=MID(A1,FIND("""",A1)-AGGREGATE(15,6,FIND("""",A1)-FIND("}}}",SUBSTITUTE(A1," ","}}}",ROW(INDIRECT("1:" & LEN(A1) - LEN(SUBSTITUTE(A1," ",""))))))/(FIND("""",A1)-FIND("}}}",SUBSTITUTE(A1," ","}}}",ROW(INDIRECT("1:" & LEN(A1) - LEN(SUBSTITUTE(A1," ",""))))))>0),1)+1,999) & " " & LEFT(A1,FIND("""",A1)-AGGREGATE(15,6,FIND("""",A1)-FIND("}}}",SUBSTITUTE(A1," ","}}}",ROW(INDIRECT("1:" & LEN(A1) - LEN(SUBSTITUTE(A1," ",""))))))/(FIND("""",A1)-FIND("}}}",SUBSTITUTE(A1," ","}}}",ROW(INDIRECT("1:" & LEN(A1) - LEN(SUBSTITUTE(A1," ",""))))))>0),1)) 

をそれは、

AGGREGATE(15,6,FIND("""",A1)-FIND("}}}",SUBSTITUTE(A1," ","}}}",ROW(INDIRECT("1:" & LEN(A1) - LEN(SUBSTITUTE(A1," ",""))))))/(FIND("""",A1)-FIND("}}}",SUBSTITUTE(A1," ","}}}",ROW(INDIRECT("1:" & LEN(A1) - LEN(SUBSTITUTE(A1," ",""))))))>0),1) 

を使用して、その中に"を持っている最初の「言葉」を見つけるでしょうそれは、文字列を分割その "単語"の前のスペースで。

次に、&を2つ返して連結します。


NOTES:

これは、 "測定"、すべてが彼らに"を持っていることを前提としています。

また、"が見つかる前に最初のスペースで分割が行われることが前提です。それは確認する必要があります、配列数式なので

=MID(A1,FIND("""",A1)-SMALL(IF(FIND("""",A1)-FIND("}}}",SUBSTITUTE(A1," ","}}}",ROW(INDIRECT("1:" & LEN(A1) - LEN(SUBSTITUTE(A1," ",""))))))>0,FIND("""",A1)-FIND("}}}",SUBSTITUTE(A1," ","}}}",ROW(INDIRECT("1:" & LEN(A1) - LEN(SUBSTITUTE(A1," ",""))))))),1)+1,999) & " " & LEFT(A1,FIND("""",A1)-SMALL(IF(FIND("""",A1)-FIND("}}}",SUBSTITUTE(A1," ","}}}",ROW(INDIRECT("1:" & LEN(A1) - LEN(SUBSTITUTE(A1," ",""))))))>0,FIND("""",A1)-FIND("}}}",SUBSTITUTE(A1," ","}}}",ROW(INDIRECT("1:" & LEN(A1) - LEN(SUBSTITUTE(A1," ",""))))))),1)) 

:だから1 - 1/4"は2007年に1 -1/4"

enter image description here


の間のスペースで分割されます、あなたは、この配列数式を使用する必要があります編集モードを終了するときにEnterの代わりにCtrl-Shift-Enterを押します。正しく実行された場合、Excelは{}を数式の周りに置きます。

+0

ありがとうScott。集計関数は、Excelのそれ以降のバージョンでのみ使用できますか?私はこれを試しましたが、2007年には集約が促されません。より現代的なバージョンにアップグレードするよう呼びかけました。うまくいけば、あなたのソリューションを使用できます。 – MTem

+0

@MTem編集を参照してください。 –