请注意,我的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>副本,公式完全丢失。
有没有什么方法可以定位最后一列没有数据,但列最后一列有数据并将其转换为值?
答案 0 :(得分:0)
'...
LastCol = rLastCell.Column
With ws.Columns(LastCol)
.Copy .Offset(0,1)
.Value = .Value
End with