动态源/根据最后一列调整数组引用
Dynamic source / adjust array reference according to last col
我正在将一个 ID 与两个主元 table 进行比较,然后按每个主元 table.
从特定列返回匹配值
以前,枢轴 tables 的列数是固定的,但现在我面临的是枢轴 tables 在最后一列方面的变化。
我的尝试是使用代码行
LastColContract = wsContractPivot.Cells(1, Columns.Count).End(xlToLeft).Column
为了找到 ContractPivot 中的最后一列然后更改行
rwReport.Columns("G").Resize(1, 7).Value = _
到
rwReport.Columns("G").Resize(1, lastColContract).Value = _
但我正在努力告诉 Excel 然后扩展数组列以在 H 之后添加其他列。
所以如果 lastcol 是 10,那么我需要代码开始列出从 B 列开始的 10 列。
如果 lastcol 为 12,则 B 等中的 12 列
For Each c In wsReport.Range("F3", wsReport.Cells(Rows.Count, "F").End(xlUp)).Cells
c.Offset(0, 1).Resize(1, 50).ClearContents
MfrName = c.Value 'read this once....
Set rwReport = c.EntireRow
'1st Database Match "ContractSpend"
m = Application.Match(MfrName, wsContractPivot.Columns("A"), 0)
If Not IsError(m) Then
With wsContractPivot.Rows(m)
'starting column
rwReport.Columns("G").Resize(1, 7).Value = _
Array(.Columns("B").Value, .Columns("C").Value, _
.Columns("D").Value, .Columns("E").Value, _
.Columns("F").Value, .Columns("G").Value, .Columns("H").Value)
'Extended Cost
End With
Else
'no match...
End If
尝试这样的事情:
'...
'...
Set pt = wsContractPivot.PivotTables(1) 'or use specific name
'https://peltiertech.com/referencing-pivot-table-ranges-in-vba/
numCols = pt.TableRange1.Columns.Count - 1 'PT width-1
For Each c In wsReport.Range("F3", wsReport.Cells(Rows.Count, "F").End(xlUp)).Cells
c.Offset(0, 1).Resize(1, 50).ClearContents
MfrName = c.Value 'read this once....
Set rwReport = c.EntireRow
m = Application.Match(MfrName, wsContractPivot.Columns("A"), 0)
If Not IsError(m) Then
rwReport.Columns("G").Resize(1, numCols).Value = _
wsContractPivot.Cells(m, "B").Resize(1, numCols).Value
End If
Next c
'...
'...
我正在将一个 ID 与两个主元 table 进行比较,然后按每个主元 table.
从特定列返回匹配值以前,枢轴 tables 的列数是固定的,但现在我面临的是枢轴 tables 在最后一列方面的变化。
我的尝试是使用代码行
LastColContract = wsContractPivot.Cells(1, Columns.Count).End(xlToLeft).Column
为了找到 ContractPivot 中的最后一列然后更改行
rwReport.Columns("G").Resize(1, 7).Value = _
到
rwReport.Columns("G").Resize(1, lastColContract).Value = _
但我正在努力告诉 Excel 然后扩展数组列以在 H 之后添加其他列。
所以如果 lastcol 是 10,那么我需要代码开始列出从 B 列开始的 10 列。 如果 lastcol 为 12,则 B 等中的 12 列
For Each c In wsReport.Range("F3", wsReport.Cells(Rows.Count, "F").End(xlUp)).Cells
c.Offset(0, 1).Resize(1, 50).ClearContents
MfrName = c.Value 'read this once....
Set rwReport = c.EntireRow
'1st Database Match "ContractSpend"
m = Application.Match(MfrName, wsContractPivot.Columns("A"), 0)
If Not IsError(m) Then
With wsContractPivot.Rows(m)
'starting column
rwReport.Columns("G").Resize(1, 7).Value = _
Array(.Columns("B").Value, .Columns("C").Value, _
.Columns("D").Value, .Columns("E").Value, _
.Columns("F").Value, .Columns("G").Value, .Columns("H").Value)
'Extended Cost
End With
Else
'no match...
End If
尝试这样的事情:
'...
'...
Set pt = wsContractPivot.PivotTables(1) 'or use specific name
'https://peltiertech.com/referencing-pivot-table-ranges-in-vba/
numCols = pt.TableRange1.Columns.Count - 1 'PT width-1
For Each c In wsReport.Range("F3", wsReport.Cells(Rows.Count, "F").End(xlUp)).Cells
c.Offset(0, 1).Resize(1, 50).ClearContents
MfrName = c.Value 'read this once....
Set rwReport = c.EntireRow
m = Application.Match(MfrName, wsContractPivot.Columns("A"), 0)
If Not IsError(m) Then
rwReport.Columns("G").Resize(1, numCols).Value = _
wsContractPivot.Cells(m, "B").Resize(1, numCols).Value
End If
Next c
'...
'...