【问题标题】:Vlookup range with a defined variable具有已定义变量的 Vlookup 范围
【发布时间】:2015-04-08 21:29:49
【问题描述】:

我正在合并几个 Excel 文件中的数据,我有 22 个文件要合并;但是,我需要专门查找单元格值。

在我的 VBA 代码中,我声明了一个名为 file=int(1) 的变量,并且我正在执行循环以打开每个 excel 文件并将其合并到一个合并文件中。我所有的 Excel 文件都从 1 到 22 编号。

我想要的是 Vlookup,但 Vlookup 的范围我希望它在执行循环时将值存储在文件中。

例如

file = Int(1)
Do Until file = 22

 ActiveCell.Formula = "=IFERROR(VLOOKUP($I$6,'[file.xls]Sheet1'!$B$4:$V$27,MATCH($F$26,'[file.xls]Sheet1'!$B$3:$V$27,0),FALSE),0)"

ActiveCell.Select
                Selection.Copy
                    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
                    :=False, Transpose:=False
                ActiveCell.Select
                Selection.Offset(1, 0).Select

                file = file + 1

你能帮帮我吗?

谢谢!

【问题讨论】:

  • 所以你的文件名是 1.xls, 2.xls, ..., 22.xls?
  • 是的 :)这些是名字

标签: vba excel match vlookup


【解决方案1】:

漂亮整洁的小循环!好的,我想我知道你想在这里做什么。您希望为循环的每次迭代动态更新公式中的[file.xls]。由于您使用的是接受字符串的 formula 属性,因此您可以将存储的 file 值直接连接到其中。

这应该可以解决问题。

ActiveCell.Formula = "=IFERROR(VLOOKUP($I$6,'[" & file & ".xls]Sheet1'!$B$4:$V$27,MATCH($F$26,'[" & file & ".xls]Sheet1'!$B$3:$V$27,0),FALSE),0)"

希望我理解正确,如果没有,我们再去一轮!

【讨论】:

  • 所以公式是 ActiveCell.Formula = "=IFERROR(VLOOKUP($I$6,'[& file & ".xls]Sheet1'!$B$4:$V$27,MATCH($ F$26,'[& file & ".xls]Sheet1'!$B$3:$V$27,0),FALSE),0)" ? ?? ? ?
  • 关闭,您似乎缺少一些引号。尝试这个。 "=IFERROR(VLOOKUP($I$6,'[" & file & ".xls]Sheet1'!$B$4:$V$27,MATCH($F$26,'[" & file & ".xls]Sheet1'!$B$3:$V$27,0),FALSE),0)"
  • 是的,它成功了!非常感谢,我还有一个问题
  • 我已经打开了所有22个文件哈哈但我想使用相同的方法 Windows(" " & file & ".xls").Activate ActiveWorkbook.Save ActiveWindow.Close 但是excel没有编译,你知道这是否与 Windows.Activate 方法有关还是我的代码有误?
  • 是的,我认为您的文件名前面有一个空格。您不需要第一组引号或 &。这应该有效。 Windows(file & ".xls").Activate: ActiveWorkbook.Save: ActiveWindow.Close
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-17
  • 2020-09-07
  • 2013-01-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多