将包含数据的最后一列复制到下一个空白列代码,以包括将公式转换为值

时间:2015-01-08 00:56:23

标签: excel vba excel-vba

请注意,我的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)中提取并记录一列数据:

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

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

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

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

有没有什么方法可以定位最后一列没有数据,但最后一列有数据并将其转换为值?

1 个答案:

答案 0 :(得分:0)

'...
LastCol = rLastCell.Column

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