vba - 公式中的工作表引用
vba - worksheet references in formula
我想不通。我正在努力使我的公式更具活力。但是总是说找不到上一个,但是我把上一个设置为作品sheet。
PrevSheetName 返回以前工作的名称sheet(有效)。
请帮助我,在我的其他代码中,我总是尝试使用 "ActiveSheet.Previous" 但它似乎不适用于公式。
Set prev = Worksheets(PrevSheetName)
Set rng = ActiveSheet.Range("D3")
rng.FormulaR1C1 = "=SUMIF(prev!C[1],RC[-2],prev!C[5])"
Range("D3").Copy Range("D4:D" & lRow)
这是我的第一个代码,并且有效
Set rng = ActiveSheet.Range("D3")
rng.FormulaR1C1 = "=SUMIF('Projekt 1'!C[1],RC[-2],'Projekt 1'!C[5])"
Range("D3").Copy Range("D4:D" & lRow)
这是我的 PrevSheetName,已将名称放入 " "
Function PrevSheetName(Optional ByVal WS As Worksheet = Nothing) As String
Application.Volatile True
Dim S As String
Dim Q As String
If IsObject(Application.Caller) = True Then
Set WS = Application.Caller.Worksheet
If WS.Index = 1 Then
With Application.Caller.Worksheet.Parent.Worksheets
Set WS = .Item(.Count)
End With
Else
Set WS = WS.Previous
End If
If InStr(1, WS.Name, " ", vbBinaryCompare) > 0 Then
Q = "'"
Else
Q = vbNullString
End If
Else
If WS Is Nothing Then
Set WS = ActiveSheet
End If
If WS.Index = 1 Then
With WS.Parent.Worksheets
Set WS = .Item(.Count)
End With
Else
Set WS = WS.Previous
End If
Q = vbNullString
End If
PrevSheetName = Q & WS.Name & Q
End Function
我只想和之前的'Projekt 1'交换sheet
prev 是公式的文字部分。它正在寻找名为 "prev" 的 sheet。您需要连接公式:"=SUMIF(" & PrevSheetName & "!C[1],RC[-2]," & PrevSheetName & "!C[5])"
如果您的 sheet 名称有空格和连字符,您需要在公式中的名称周围添加 ',例如 "=SUMIF('" & PrevSheetName & "'!C[1], RC[-2],'" & PrevSheetName & "'!C[5])"
我想不通。我正在努力使我的公式更具活力。但是总是说找不到上一个,但是我把上一个设置为作品sheet。 PrevSheetName 返回以前工作的名称sheet(有效)。 请帮助我,在我的其他代码中,我总是尝试使用 "ActiveSheet.Previous" 但它似乎不适用于公式。
Set prev = Worksheets(PrevSheetName)
Set rng = ActiveSheet.Range("D3")
rng.FormulaR1C1 = "=SUMIF(prev!C[1],RC[-2],prev!C[5])"
Range("D3").Copy Range("D4:D" & lRow)
这是我的第一个代码,并且有效
Set rng = ActiveSheet.Range("D3")
rng.FormulaR1C1 = "=SUMIF('Projekt 1'!C[1],RC[-2],'Projekt 1'!C[5])"
Range("D3").Copy Range("D4:D" & lRow)
这是我的 PrevSheetName,已将名称放入 " "
Function PrevSheetName(Optional ByVal WS As Worksheet = Nothing) As String
Application.Volatile True
Dim S As String
Dim Q As String
If IsObject(Application.Caller) = True Then
Set WS = Application.Caller.Worksheet
If WS.Index = 1 Then
With Application.Caller.Worksheet.Parent.Worksheets
Set WS = .Item(.Count)
End With
Else
Set WS = WS.Previous
End If
If InStr(1, WS.Name, " ", vbBinaryCompare) > 0 Then
Q = "'"
Else
Q = vbNullString
End If
Else
If WS Is Nothing Then
Set WS = ActiveSheet
End If
If WS.Index = 1 Then
With WS.Parent.Worksheets
Set WS = .Item(.Count)
End With
Else
Set WS = WS.Previous
End If
Q = vbNullString
End If
PrevSheetName = Q & WS.Name & Q
End Function
我只想和之前的'Projekt 1'交换sheet
prev 是公式的文字部分。它正在寻找名为 "prev" 的 sheet。您需要连接公式:"=SUMIF(" & PrevSheetName & "!C[1],RC[-2]," & PrevSheetName & "!C[5])"
如果您的 sheet 名称有空格和连字符,您需要在公式中的名称周围添加 ',例如 "=SUMIF('" & PrevSheetName & "'!C[1], RC[-2],'" & PrevSheetName & "'!C[5])"