什么是Excel替代函数用于间接引用另一张工作表

问题描述 投票:0回答:1

上下文:我正在处理 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)
它没有结果。

excel office365
1个回答
0
投票

试试这个代码:

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
© www.soinside.com 2019 - 2024. All rights reserved.