【问题标题】:Dynamic Column lookup with different pages in excelexcel中不同页面的动态列查找
【发布时间】:2013-10-25 23:52:23
【问题描述】:

我在 excel 中有一个多页电子表格,需要从其他页面上的列中动态读取信息,并将这些值显示在主页上。

这是我使用的公式:

=IF(VLOOKUP($B:$B,'CP01'!$B:$BN,3,FALSE)="r","r",
        IF(VLOOKUP($B:$B,'CP01'!$B:$BN,3,FALSE)="a","a",""))

CP01 是 excel 文件中的一个工作表,而不是查看特定工作表,我希望它查看文件中的所有工作表。

有没有办法通过 excel 公式或 excel-VBA 来做到这一点?

编辑:我也试过CP*(* 是一个通配符)但没有用。

Edit2:有没有办法将放置“CP”的值与其其他列值匹配?

【问题讨论】:

  • 还是不太明白自己想要达到什么目的……
  • 'CP01' 是此公式中的硬编码值。但是,当它对应的列时,它需要更改值。因此,如果 A 列显示“CP02”,那么 B 列中公式中的值需要更改为该值。

标签: excel excel-formula vba


【解决方案1】:

如果将此函数放在VBA 模块中:

Public Function sheetName(index As Long)
    On Error Resume Next
    sheetName = ThisWorkbook.Worksheets.Item(index).Name
    sheetName = IIf(Err.Number = 0, sheetName, CVErr(xlErrNA))
End Function

那么你可以这样做(B 列显示A 列的值):

所以现在引用另一个工作表中的单元格是这样的(B 列显示A 列的值):

我希望这会有所帮助?

【讨论】:

  • 这很有帮助,但我需要将单元格 A 的值输入到单元格 B 中的公式中。我可以使用此模块执行此操作吗?
  • 是的:假设 CP01 是您的第一张工作表,请在您的代码中将这部分 'CP01'!$B:$BN 更改为 INDIRECT(sheetName(1) &"!$B:$BN")。如果CP01 是您的第二张工作表,请改用sheetName(2)。要自动扫描所有工作表,请从第 1 行开始您的公式,当您将其向下拖动时,sheetName(ROW()) 将为您提供文件中 ROW()-th 工作表的名称。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-03-28
  • 1970-01-01
  • 2012-11-05
  • 1970-01-01
  • 1970-01-01
  • 2014-10-16
  • 1970-01-01
相关资源
最近更新 更多