将带有数据的最后一列复制到下一个空白列代码以包括将公式转换为值
Expanding copy last column with data to next blank column code to include converting formulas to values
首先要说的是,我的 VBA 技能几乎仅限于调整现有代码 - 简明扼要,基本上我有以下代码...
Sub Test()
Dim ws As Worksheet
Set ws = ActiveSheet
Dim rLastCell As Range
Dim LastCol As Integer
Set rLastCell = ws.Cells.Find(What:="*", After:=ws.Cells(1, 1), LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlPrevious, MatchCase:=False)
LastCol = rLastCell.Column
ws.Columns(LastCol).Copy ws.Columns(LastCol + 1)
End Sub
...将包含数据的最后一列复制到没有数据的下一列。我的工作簿本质上是一个 'master' 电子表格,它使用以下函数从每天生成的报告 (data.xls) 中提取和记录一列数据:
=VLOOKUP("Sheet1",data.xls!$A:$B,2, FALSE)
我遇到的问题是,当data.xls第二天发生变化时,当我更新工作簿时,前一天的记录也发生了变化。
到目前为止,我唯一可能的解决方案是以某种方式使用 VBA 将带有公式的最后一列复制到下一个空白列,上面的代码实现了这一点,但随后也转换了被复制的列到价值观。
我尝试合并将 所有 公式转换为值的代码,但如果它在复制之前运行,它复制的是值而不是公式——如果它运行 复制后,公式全丢了
有什么方法可以不针对最后一列数据,而是针对最后一列之前的列并将其转换为值?
'...
LastCol = rLastCell.Column
With ws.Columns(LastCol)
.Copy .Offset(0,1)
.Value = .Value
End with
首先要说的是,我的 VBA 技能几乎仅限于调整现有代码 - 简明扼要,基本上我有以下代码...
Sub Test()
Dim ws As Worksheet
Set ws = ActiveSheet
Dim rLastCell As Range
Dim LastCol As Integer
Set rLastCell = ws.Cells.Find(What:="*", After:=ws.Cells(1, 1), LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlPrevious, MatchCase:=False)
LastCol = rLastCell.Column
ws.Columns(LastCol).Copy ws.Columns(LastCol + 1)
End Sub
...将包含数据的最后一列复制到没有数据的下一列。我的工作簿本质上是一个 'master' 电子表格,它使用以下函数从每天生成的报告 (data.xls) 中提取和记录一列数据:
=VLOOKUP("Sheet1",data.xls!$A:$B,2, FALSE)
我遇到的问题是,当data.xls第二天发生变化时,当我更新工作簿时,前一天的记录也发生了变化。
到目前为止,我唯一可能的解决方案是以某种方式使用 VBA 将带有公式的最后一列复制到下一个空白列,上面的代码实现了这一点,但随后也转换了被复制的列到价值观。
我尝试合并将 所有 公式转换为值的代码,但如果它在复制之前运行,它复制的是值而不是公式——如果它运行 复制后,公式全丢了
有什么方法可以不针对最后一列数据,而是针对最后一列之前的列并将其转换为值?
'...
LastCol = rLastCell.Column
With ws.Columns(LastCol)
.Copy .Offset(0,1)
.Value = .Value
End with