将包含数据的最后一列的副本展开到下一个空白列代码,以便将公式转换为值

这只是说,我的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 

…将最后一列的数据复制到下一列,没有数据。 我的工作簿本质上是一个“主”电子表格,它使用以下函数从每天生成的报表(data.xls)中提取和logging一列数据:

 =VLOOKUP("Sheet1",data.xls!$A$2:$B$40,2, FALSE) 

我遇到的问题是,当data.xls在第二天更改时,当我更新工作簿时,前一天的logging也发生变化。

到目前为止,我唯一可能的解决scheme是以某种方式使用VBA将具有公式的最后一列复制到上面代码实现的下一个空白列,然后将复制的列转换为值。

我已经尝试了将所有公式转换为值的代码,但是如果它在副本之前运行,它会复制值而不是公式 – 如果它副本之后运行,则公式将完全丢失。

有没有什么办法,我可以针对不是最后一列的数据,但最后一列数据的列,并将其转换为值?

 '... LastCol = rLastCell.Column With ws.Columns(LastCol) .Copy .Offset(0,1) .Value = .Value End with