【问题标题】:Match text from two different workbooks, return value from different column匹配来自两个不同工作簿的文本,从不同列返回值
【发布时间】:2014-11-27 12:12:43
【问题描述】:

在我的生活中,我从未对 Excel 感到如此沮丧。我在工作中遇到了两个主要的截止日期,而将正确的信息传递给正确的人的唯一方法就是解决以下问题。

我有两个工作簿,每个工作簿中针对不同的“客户”具有不同的指标,我需要将所有信息放入一个工作表中 - 不能简单地复制/粘贴数据,因为我可以在第一个有客户 A工作簿,但不是在第二个。此外,不能使用“客户名称”作为工作簿之间的唯一标识符,因为一个可能是“约翰史密斯公司”,另一个可能是“约翰史密斯公司”。

这是一个非常简单的例子:

工作簿 A

  • 客户 ID
  • 员工人数

工作簿 B

  • 客户 ID
  • 客户年限
  • 位置
  • 客户名称

在您将我标记为重复问题之前,请知道我已尝试以下公式无济于事:

=VLOOKUP(D2,[othersheet.xlsx]sheet1!$A:$D,2,FALSE)

=IF(ISERROR(EXACT(D2,[othersheet.xlsx]sheet1!$1:$1048576)), "True", VLOOKUP(D2,[othersheet.xlsx]sheet1!$1:$1048576,2,FALSE))

在这里失去理智 - 任何想法都会很棒。提前谢谢!

预计到达时间:

我正在使用 Excel 2011 for Mac,v. 14.4.1。

【问题讨论】:

  • 给我们上面数据的工作表和列名,然后答案可以参考正确的列(也将有助于检查您的公式)
  • 所以在上面的例子中,我在“[mainsheet.xlsx]sheet1”中尝试这两个公式,以尝试引用“[othersheet.xlsx]sheet1”中的数据。这有意义吗?
  • 到底是什么问题?您的 vlookup 看起来不错。只是它返回#N/A,其中数据不存在于'othersheet'中吗?
  • 戴夫,问题是使用这些公式中的任何一个都会为所有内容返回 #N/A,即使它不应该这样做。我不知道确切的问题是什么,因此提出了问题。
  • 这里的两个 vlookup 公式的格式都不正确 - 即引用一个范围...[othersheet.xlsx]sheet1!$A:$D -> [othersheet.xlsx]sheet1!$A$1:$D$100

标签: excel excel-formula matching vlookup excel-2011


【解决方案1】:

你试过了吗:
=VLOOKUP(D2,[othersheet.xlsx]sheet1!$A$1:$D$1000,2,FALSE)

【讨论】:

  • 你得到什么答案/错误?另外,尝试:=if(D2=[othersheet.xlsx]sheet1!A10,TRUE,FALSE)(其中 [master]D2 和 [other]A10 中的客户端 ID 看起来相同)并告诉我们结果是什么。
  • user3616725 - 试过了,没用。没有错误消息,整个列中只有“FALSE”。
  • 这意味着您的“客户 ID”在两张纸上并不完全相同。暂时不要使用vlookup。在两个 Seets 上选择两个看起来具有相同客户端 ID 的单元格。将=if(D2=[othersheet.xlsx]sheet1!A10,TRUE,FALSE) 放在母版表上的任何位置(更改 D2 和 A10 以更正引用)并从具有 ID 的单元格中删除任何空格等,直到结果显示为 TRUE
  • 感谢 user3616725 - 这一定是问题所在。我将查看该列并尝试了解它们不匹配的原因。
【解决方案2】:

我认为最简单的方法是使用

=match(clientID_WorkbookA_CellA2,ClientID_WorkBookB,0) 在工作簿 A 中查看哪些 ID 在两个列表中。然后手动调整相同但输入错误的客户端 ID。

那么任何不匹配的都不在工作簿 B 中。过滤这些并将它们附加到工作簿 B 中表格的末尾。

然后创建一个标有员工数量的列,工作簿 B 并使用 sumif。类似:

=sumif(ClientID_WorkBookA,ClientID_WorkBookB_CellA2,Employees_WorkBookA).

显然,如果没有看到实际的电子表格,很难提供更好的代码,但我相信你理解了这个要点。

更新

工作表 A

在单元格 E2 中输入=trim(D2) 并向下拖动

工作表 B

在单元格 O2 中输入 =trim(D2) 并向下拖动

在单元格 C2 中输入 =sumif(O2,sheetA!E:E,sheetA!B:B) 并向下拖动

如果有任何错误,则表示您在 O 列中的客户 ID 在工作表 A 中不存在。

【讨论】:

  • 这对我不起作用 - 匹配功能由于某种原因甚至不起作用,尽管当我坐在这里时,我可以直观地匹配其中一位客户的“客户 ID”。我什至不知道这么简单的事情怎么可能行不通。非常令人沮丧,但感谢您的帮助。
  • 您能否将电子表格的图片添加到您的问题中?我会相应地更新我的公式。或者你可以粘贴你的匹配公式,我可以告诉你出了什么问题。
  • 由于数据是专有的,我真的无法分享工作表的图像。不过,我可以提供模拟数据……给我几分钟,我会在这里提供一些数据。
  • 您应该在您的客户 ID 上使用 =trim() 并将匹配项指向修剪后的列。这可能会解决它。
  • 感谢 Thomas Almond - 我需要在 Stack Overflow 上至少 10 名声望才能发布图片,所以无法添加它们,但这里是链接:Workbook A - i973.photobucket.com/albums/ae214/ellemoncada/… & Workbook B - @987654322 @
【解决方案3】:

使用 Vlookup 时,您要检查的值必须在您正在查看的范围的最左侧列中。您当前的公式正在尝试根据客户名称查找客户 ID。

您是否尝试过对 D 列执行 Match()?您可以将其与 Index() 函数结合使用以获得所需的内容:

=INDEX([othersheet.xlsx]sheet1!$B:$B,MATCH(D2,[othersheet.xlsx]sheet1!$D:$D,FALSE))

【讨论】:

  • 这个也不适合我。我试过匹配,神奇的是,它根本不起作用——数据一定不匹配,不知何故。我尝试过修剪、计数字符……尽我所能来理解数据的问题。恐怕现在除了一瓶威士忌对我有帮助。
【解决方案4】:

除非在 Excel 中找到解决方案是一种强迫,否则可以通过 MS Access 找到解决方案。

将两个excel文件导入Access中的数据库,打开QUERY的设计视图,打开两个文件,链接(innerjoin)客户ID,将两个文件中的必填字段拖到下表中并查看导致查询的数据库视图。

使用正确的名称保存并关闭 QUERY。右键单击左侧窗格中保存的查询;将文件导出到excel。 Excel 文件已准备就绪。

据说数据在原始文件中排列成多个矩阵。如果在同一个工作表中创建了多个表,则命名范围是一个好主意,以便将数据轻松导入数据库。所有表格的标题和列中数据的顺序都应相似。多个工作表没有问题,因为 Access 会询问是要导入工作表还是要导入范围。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-10-13
    • 2016-12-21
    • 2013-12-13
    • 1970-01-01
    • 1970-01-01
    • 2020-07-20
    • 1970-01-01
    相关资源
    最近更新 更多