如何从不同的文件path中的不同工作簿检索单元格值?

所讨论的列是D,E,F,G和H,我希望它们从其他工作簿中不同文件位置的单元格中检索值。

Index.xlsx中的每个上述列对应于发票工作簿中的某些单元格(例如,000000.xlsx,000006.xlsx和000011.xlsx)。

但是,并非所有的发票都位于同一个文件夹中。 例如, 000000.xlsx位于“C:\ Users \ Jimmy \ Documents \ Excel Formula Testing \ 2015 \ March ”中, 000007.xlsx位于“C:\ Users \ Jimmy \ Documents \ Excel Formula Testing \ 2015 \ March”

澄清,这是我想要他们做的。

  • Index.xlsx中的D2从000000.xlsx中的B1检索值
  • Index.xlsx中的E2从000000.xlsx中的B5检索值
  • Index.xlsx中的F2从000000.xlsx中的B6检索值
  • Index.xlsx中的G2从000000.xlsx中的B7检索值
  • Index.xlsx中的H2从000000.xlsx中的B9检索值

在这里输入图像说明

*我有数以百计的发票,所以我不能手动input,所以我会需要一个公式,自动执行此操作。 然而,是否有可能做一个公式,而不使用VBA(我不知道它)?

**第三列是根据此线程中的公式创build的。

这个代码应该做的伎俩。

Sub test() Dim ChkRng As Range, ws As Worksheet, strPath As String, strMonth As String, cell As Range, strSheet As String, strYear As String, strFormula as string Set ws = ActiveSheet strPath = "C:\Users\Jimmy\Documents\Excel Formula Testing\" With ws Set ChkRng = .Range("A2", Range("A" & Cells(.Rows.Count, "A").End(xlUp).Row)) End With For Each cell In ChkRng strYear = Right(cell.Value, 4) & "\" strMonth = Left(cell.Value, InStr(1, cell.Value, " ") - 1) & "\" strFile = cell.Offset(0, 1).Text & ".xlsx" strSheet = "Sheet1" strFormula = "='" & strPath & strYear & strMonth & "[" & strFile & "]" & strSheet cell.Offset(0, 3).Formula = strFormula & "'!B1" cell.Offset(0, 4).Formula = strFormula & "'!B5" cell.Offset(0, 5).Formula = strFormula & "'!B6" cell.Offset(0, 6).Formula = strFormula & "'!B7" cell.Offset(0, 7).Formula = strFormula & "'!B9" Next cell End Sub 

根据您的需要更改静态string,如果文件夹和文件存在,它应该工作。 至less它是在我小小的例子中为我做的。

PS。 请记住要将strSheet更改为发票文件中工作表的名称,并且如果它是静态工作表名称,请将其在strPath中或在至lessFor Each …. Next循环中移动。

如果它不起作用,评论,我会看看我能做些什么。