2013-07-17 71 views
0

我有一個導入到Excel 2010的CSV文件。一個單元格包含我想要的一部分文本,但它在單元格內具有不同的長度和位置。並非每個記錄都有單元格中的數據。每段文本都以分號(;)分隔,但仍位於同一單元格內。所以:如何從多個值的單元格中選擇一些數據?

  • B2 = text_I_want
  • B3 =空白
  • B4 = text_I_don't_want; text_I_want_that_has_a_different_length; more_text_I_don't_want
  • B5 = text_I_don't_want; text_I_don't_want; text_I_don't_want; text_I_want_now;

同一行的列M應包含我想要的全部文本,但只包含我想要的內容。所以:

  • M2 = text_I_want
  • M3 =空白
  • M4 = text_I_want_that_has_a_different_length
  • M5 = text_I_want_now

有超過10,000個記錄經歷,並希望幫助。

編輯:我沒有清楚地解釋自己。 B列包含一個包含各種超鏈接的文本字符串。每個單元格可以包含零個超鏈接,一個超鏈接,2,3,4等等。每個超鏈接以分號分隔。我只想要amazon.com超鏈接,而不是amazon.ca或amazon.co.uk或任何其他超鏈接。我希望這是一個更清晰的例子,我想在一個單獨的領域,粗體。 -B2 = amazon.com/12345 -B3 = amazon.ca/search?keywords = William + Shatner -B4 = amazon.ca/12AB; amazon.com/AB1; loc.gov/fubar -B5 = amazon.com/978037346; amazon.de/search?VX123 編輯#2 - 由於我可以將文本轉換爲列,所以這個問題怎麼樣:我如何搜索一個包含amazon.com的單元格的行com列AG,然後將該單元格內容複製到列M?

+0

從我所看到的,我認爲是有規律可循?..喜歡它的移動更遠1個分號在同一時間 –

+0

@FrancisFuerte的模式將是有益的,但想必這不會重複10000次? – pnuts

回答

0

您可以使用Find/FindB(取決於您的內容是單字節還是MBCS數據 - 以B結尾的數據爲MBCS數據)。

N2,例如,你可以使用

=Find(M2, B2) 

N2將包含M2文本的偏移量(指數)B2,或零,如果它沒有找到。

要提取文本,請使用Mid/MidBLen/LenB。您可以在P2添加此,例如:

=IF(N2 > 0, MID(B2, N2, LEN(M2)), "") 

這種檢查是否在N2值大於零,如果是副本開始在N2爲號所指示的位置從B2文本返回的文字長度爲M2。如果N2爲零,則返回空格。

可以,事實上,結合兩種操作成一個(這是一個有點難以閱讀):在B1根據您的第一次編輯

=IF(Find(M2, B2) > 0, Mid(B2, Find(M2, B2), Len(M2)), "")  
+0

我擔心至少我們中的一個人完全誤解了這個問題! – pnuts

+1

是的,它的確如此。看起來這個問題完全隨着我發佈我的答案後做出的修改而改變(這基本上是與最初在此處陳述的問題不同的問題)。目前還不清楚海報的​​實際要求是什麼,編輯部分中的亂碼文本沒有多大幫助。海報應該盡力在VBA中解決這個問題,然後發佈*清晰的樣本*,代碼嘗試失敗,並且更清楚地重述問題。但似乎並不會發生。我的答案仍然很容易適應'編輯#2'部分,所以我會離開它。 –

+0

要在列M中放置的公式中對M2的引用看起來很可疑。 – pnuts

-1

,與amazon.com/(對於靈活性的緣故)那麼:

=IF(AND(IFERROR(FIND(";",B2,IFERROR(FIND($B$1,B2),"")),"")="",IFERROR(FIND($B$1,B2),"")<>""),B2,IFERROR(MID(B2,IFERROR(FIND($B$1,B2),""),IFERROR(FIND(";",B2,IFERROR(FIND($B$1,B2),"")),"")-IFERROR(FIND($B$1,B2),"")),"")) 

(根據需要複製)應該工作。

SO17689216 example

相關問題