如何从具有多个值的单元格中仅选择一些数据?

时间:2013-07-17 00:35:04

标签: excel

我有一个导入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列A-G,然后将该单元格内容复制到M列?

2 个答案:

答案 0 :(得分:0)

您可以使用Find/FindB(取决于您的内容是单字节还是MBCS数据 - 以B结尾的内容是针对MBCS数据的。)

例如,在N2中,您可以使用

=Find(M2, B2)

N2将包含M2B2中文本的偏移量(索引),如果未找到,则为零。

要提取文字,请使用Mid/MidBLen/LenB。您可以在P2中添加,例如:

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

这将检查N2中的值是否大于零,以及是否从B2中指示的位置开始复制N2中的文字以获取字符数以M2中的文本长度返回。如果N2为零,则返回空格。

事实上,你可以将两个操作组合成一个(它有点难以阅读):

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

答案 1 :(得分:-1)

根据您的第一次修改,amazon.com/中的B1(为了灵活性),然后:

=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