【问题标题】:Need to Pull Data from Second Sheet using Part of Cell on First Sheet需要使用第一张表上的部分单元格从第二张表中提取数据
【发布时间】:2016-04-14 00:18:14
【问题描述】:

我正在处理由另一个程序创建并保存到 Excel 中的数据,这些数据在某些事物的缩写方式上不一致,在某些单元格的间距上也不一致。这个网站在提取一些数据方面有很大帮助,但这个网站让我很难过。如果已经回答,请指出我的答案,因为我找不到它。 :)

我有一个“参考”工作表(保持隐藏状态),其中第一列是可能的缩写,第二列是需要返回的值。参考表可能会显示:(单元格由 // 分隔,行由 \ 分隔:Apple//Apple\ Apple//Apple\ Banana//Banana\ Ban//Banana\ Org//Orange\ Orange//Orange)

创建/导入的数据可能包括 4 个如下所示的单元格(单元格由 //: 1234 - Apple - Cut and serve //Sometimes 836 Banana Raw//Org Peel // 730-Orange-Juice 分隔):

我需要提取每个引用的水果名称。实际上,我需要的是第一列中单元格内容包含在导入数据中的行(在参考表上)。然后,我可以使用查找从该行第二列的单元格中提取值。

因此,在我的示例数据中,公式将返回:

2 3 5 6

我希望清楚地解释这一点。哦,我只能使用公式,不能进行任何编程。

感谢您提供的任何指导。

【问题讨论】:

  • 您是否尝试过替换而不是公式?
  • 嗯...替换不是我看过的东西。问题是我不知道导入的数据中会使用哪个缩写,并且缩写可能会随着时间而改变,因此电子表格需要引用一个可以在以后轻松编辑的工作表。此外,无法编辑来自其他程序的数据(它保存在许多人访问的不同电子表格中)。最后一个复杂的细节:我有一个缩写是另一个缩写的一部分(比如“ap”表示苹果是葡萄这个词的一部分)。
  • 不确定这是否适用于所有情况,但 Apple 的 Ap 仅在 Apple 开头找到,因此如果您正在搜索 Ap,您可能会搜索“Ap”(带前导空格的 Ap )。如果您将 Br 用于布鲁塞尔芽菜,并且您还需要应对西兰花,这将无济于事
  • 每个单元格中是否只有 1 个水果?所以你不会看到像 1234 - Apple and Orange - Cut and Serve 之类的东西
  • 提到的问题也适用于公式解决方案,您总是需要在开头和结尾处分隔字符组合,以确保找到的组合不是另一个单词的一部分.这需要在每个单元格的开头和结尾添加一个空格。我建议使用 VBA 解决方案。

标签: excel excel-formula


【解决方案1】:

在我看来,如果您导入显示的数据,则无法使用公式执行此操作,因为您无法对单元格中包含的每个“子字符串”(或单词)进行“搜索”,并将其与其他子字符串的列表。
否则,如果您导入“创建/导入”工作表的数据,将空格“”指定为单元格分隔符,将“//”指定为行分隔符,则每个单元格都会有一个单词,例如

    A    |    B    |    C    |    D    |    E    |    F    |    G    |  
  1234        -       apple       -        cut      and       serve  
sometimes   836       banana     raw  
  org       peel  
  730      orange     juice  

在这里,您可以将VLOOKUP 用于通过导入形成的列的每个单元格,以便在“参考”表中搜索单词,因此使用相同数量的列(在本例中为 7)和每个单元格cols 为相应的单元格(示例中的 A 到 G)执行 VLOOKUP 并找到您的 friut,类似这样

=VLOOKUP(A1;'[Worksheet_reference.xlsx]sheet_reference'!$A$1:$A$100;2;FALSE)

你可以得到类似的东西

  AA    |    AB    |    AC    |     AD    |    AE    |    AF    |    AG    |  
 N/A        N/A        apple       N/A       N/A         N/A        N/A  
 N/A        N/A       banana       N/A  
orange      N/A  
 N/A       orange     N/A  

您可以添加 IFISNA 以检测 N/A 值并写入其他内容而不是它们,例如

=IF(ISNA(VLOOKUP(A1;'[Worksheet_reference.xlsx]sheet_reference'!$A$1:$A$100;2;FALSE));"";VLOOKUP(A1;'[Worksheet_reference.xlsx]sheet_reference'!$A$1:$A$100;2;FALSE))

for return "" 而不是 N/A,然后你可以连接结果(你说每一行只有一个 friut)所有行的结果都在一行中,如单元格 AF

=AA&AB&AC&AD&AE&AF&AE

你只会得到水果...
这不是那么“干净”,但这是我能想象的唯一方法;)

埃托雷

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-11
    • 2010-12-31
    • 2015-06-29
    • 1970-01-01
    • 2015-02-09
    相关资源
    最近更新 更多