我目前正在尝试基本上复制一个带有单元格引用的公式,该单元格引用应该是动态的,但它不起作用。我尝试了很多事情,但我只是想介绍一下自己,并说我过去 5 天一直在编写 vba 代码,所以我不是专家,如果我的代码没有优化或更好,请原谅我。如果您有更好的想法,请告诉我。
我想要跨越该范围的公式是
=IFERROR(INDEX('Request Tracker'!$K:$K,MATCH(Email.Template!E14,'Request Tracker'!$G:$G,0)),"")
我需要帮助的代码
name2.CurrentRegion.Offset(2, 4).Resize(name2.CurrentRegion.Rows.Count - 2, name2.CurrentRegion.Columns.Count - 7).Formula = [=IFERROR(INDEX('Request Tracker'!$K:$K,MATCH(Email.Template!R[]C5,'Request Tracker'!$G:$G,0)),"")]
我需要第三个子的帮助,其中粘贴了公式
1) 召唤
Sub RUN()
Call AdvancedFilter
Call AdvancedFilterQC
End Sub
2)第一张桌子
Sub AdvancedFilter()
Sheet3.Range(Sheet3.Range("B5:I20"), Sheet3.Range("B5:I20").End(xlDown)).Clear
Dim source1 As Range
Dim criteria1 As Range
Dim output1 As Range
Set source1 = Sheet1.ListObjects("RT").Range
Set criteria1 = Sheet4.Range("A3").CurrentRegion
Set output1 = Sheet3.Range("B3").CurrentRegion
source1.AdvancedFilter xlFilterCopy, criteria1, output1
End Sub
3)第二张表
Sub AdvancedFilterQC()
Dim output1 As Range
Dim qcheader As Range
Dim qctitle As Range
Set output1 = Sheet3.Range("B3").CurrentRegion
With output1
Set qctitle = .Offset(.Rows.Count + 1).Cells(1, 1)
Set qcheader = .Offset(.Rows.Count + 2).Cells(1, 2)
End With
Sheet4.Range("F18:M18").Copy qctitle
Sheet4.Range("F19:J19").Copy qcheader
Dim source2 As Range
Dim criteria2 As Range
Dim output2 As Range
Set source2 = Sheet2.ListObjects("QCT").Range
Set criteria2 = Sheet4.Range("A9").CurrentRegion
Set output2 = qcheader.CurrentRegion.Offset(1, 1).Resize(qcheader.CurrentRegion.Rows.Count, _
qcheader.CurrentRegion.Columns.Count - 3)
source2.AdvancedFilter xlFilterCopy, criteria2, output2
Dim name2 As Range
Set name2 = output2
Sheet4.Range("K19").Copy name2.Cells(1, 4)
name2.CurrentRegion.Offset(2, 4).Resize(name2.CurrentRegion.Rows.Count, _
name2.CurrentRegion.Columns.Count - 7).Clear
name2.CurrentRegion.Offset(2, 4).Resize(name2.CurrentRegion.Rows.Count - 2, name2.CurrentRegion.Columns.Count - 7).Formula = [=IFERROR(INDEX('Request Tracker'!$K:$K,MATCH(Email.Template!R[]C5,'Request Tracker'!$G:$G,0)),"")]
End Sub
更正后的线应如下所示:
name2.CurrentRegion.Offset(2, 4).Resize(name2.CurrentRegion.Rows.Count - 2, name2.CurrentRegion.Columns.Count - 7).FormulaR1C1 = _
"=IFERROR(INDEX('Request Tracker'!C11,MATCH(Email.Template!RC[-4],'Request Tracker'!C7,0)),"""")"
在此更正的版本中,我使用了 FormulaR1C1 属性,它允许您使用 R1C1 样式引用设置公式。
Email.Template!RC[-4] 指“Email.Template”工作表中当前行 (R[0]) 和左侧 4 列 (C[-4]) 中的单元格。
我只需要根据我所指的单元格的实际相对位置调整-4即可。