上下文:我正在处理 300 份合同,并根据这些合同信息创建数据库。合同的名称为 001、001 (2)、002、003 等 我确实使用“名称管理器”打印了工作表名称,指的是:
=REPLACE(GET.WORKBOOK(1),1,FIND("]",GET.WORKBOOK(1)),"")
A 列中的 =index(Sheetname,A2)
其数字为 1 到 300
我面临的问题:我使用间接函数
=INDIRECT("'"&$B2&"'!$C$4")
来调用合约名称...等等。但是在300之后,这个excel加载太多,我对这些信息做了一些求和,但计算了每一个微小的变化。
如何从工作表中调用数据库中的这些信息或如何将间接函数更改为其他非易失性函数。
我尝试了 concat、index 但没有结果值或 na。
=vlookup(CONCAT("'",B2,"'",C4) VLOOKUP(F$2,'(INDEX(SheetNernuud,B2)'!$B$3:$C$12,2)
它没有结果。
试试这个代码:
Option Explicit
Sub SubReport()
'Declarations.
Dim WksSheet As Worksheet
Dim StrAddress As String
Dim VarReport() As Variant
'Settings.
ReDim VarReport(1 To 2, 1 To 1)
StrAddress = "C4"
VarReport(1, 1) = "Sheet"
VarReport(2, 1) = "Value in " & StrAddress(0, 0)
'Covering each worksheet in ThisWorkboo.
For Each WksSheet In ThisWorkbook.Worksheets
'Checking if the first 3 characters of WksSheet.Name are numeric.
If IsNumeric(Right(WksSheet.Name, 3)) Then
'Increasing the size of VarReport.
ReDim Preserve VarReport(1 To 2, 1 To UBound(VarReport, 2) + 1)
'Reporting the name of WksSheet.
VarReport(1, UBound(VarReport, 2)) = WksSheet.Name
'Reporting the data of the cell specified (only 1 cell worth of data acceptable).
VarReport(2, UBound(VarReport, 2)) = WksSheet.Range(StrAddress).Cells(1, 1)
End If
Next
'Transposing the value in VarReport.
VarReport = Excel.WorksheetFunction.Transpose(VarReport)
'Creating a new sheet.
Set WksSheet = ThisWorkbook.Sheets.Add
'Reporting the value of VarReport.
WksSheet.Range("A1").Resize(UBound(VarReport, 1), UBound(VarReport, 2)).Value2 = VarReport
End Sub