在excel公式(VBA)中引用浮动列

在excel公式(VBA)中引用浮动列,vba,excel,Vba,Excel,我正试图通过一个工作表来获取一些数据。有了这些数据,我试图进行计算并直接输出到另一个工作表(我希望公式在工作表上) 我循环遍历每一列(第一行)以查看是否有数据。如果有,则进行计算。问题是我使用concatenate和一个变量来计算行数,但这对列不起作用 代码是: Sub OutputManager() Dim x As Long Dim lRow As Long, lColumn As Long Dim LastRow As Long, LastColumn As Long Dim ws As

我正试图通过一个工作表来获取一些数据。有了这些数据,我试图进行计算并直接输出到另一个工作表(我希望公式在工作表上)

我循环遍历每一列(第一行)以查看是否有数据。如果有,则进行计算。问题是我使用concatenate和一个变量来计算行数,但这对列不起作用

代码是:

Sub OutputManager()

Dim x As Long
Dim lRow As Long, lColumn As Long
Dim LastRow As Long, LastColumn As Long
Dim ws As Worksheet


'find date limits
LastRow = Worksheets("TIME").Cells(Rows.Count, "A").End(xlUp).Row
LastColumn = Worksheets("TIME").Cells(1, Columns.Count).End(xlToLeft).Column


'enter an if loop to find an index

For lColumn = 2 To LastColumn
    If Worksheets("TIME").Cells(1, lColumn) <> "" Then
        For lRow = 3 To LastRow
            Worksheets("Ret").Cells(lRow, lColumn) = "='TIME'!" & lColumn & lRow & "/'TIME'!" & lColumn & lRow - 1 & "-1" 
                  '***** problem with the lcolumn, it gives a number and not a "A" or "B"

        Next lRow
    End If
Next lColumn
子输出管理器()
暗x等长
暗淡的lRow和长的一样,lColumn和长的一样
将LastRow变长,LastColumn变长
将ws设置为工作表
'查找日期限制
LastRow=工作表(“时间”)。单元格(Rows.Count,“A”)。结束(xlUp)。行
LastColumn=工作表(“时间”)。单元格(1,Columns.Count)。结束(xlToLeft)。列
'输入if循环以查找索引
对于lColumn=2到最后一列
如果工作表(“时间”)。单元格(1,lColumn)”,则
对于lRow=3至最后一行
工作表(“Ret”)。单元格(lRow,lColumn)=“TIME”!“&lColumn&lRow&“/”TIME”!”&lColumn&lRow-1&“1”
“******lcolumn的问题是,它给出的是一个数字,而不是“a”或“B”
下一条路
如果结束
下一列
有什么办法吗?

试试这个:

With Worksheets("TIME")
    For lColumn = 2 To LastColumn
        If .Cells(1, lColumn) <> "" Then
            For lRow = 3 To LastRow
                Worksheets("Ret").Cells(lRow, lColumn) = "='TIME'!" & .Cells(lRow, lColumn).Address & "/'TIME'!" & .Cells(lRow - 1, lColumn).Address & "-1"
            Next lRow
        End If
    Next lColumn
End With
与工作表(“时间”)
对于lColumn=2到最后一列
如果.Cells(1,lColumn)“,则
对于lRow=3至最后一行
工作表(“Ret”).Cells(lRow,lColumn)=“TIME”!”和.Cells(lRow,lColumn).地址和“/”TIME”!”和.Cells(lRow-1,lColumn).地址和“-1”
下一条路
如果结束
下一列
以

最简单的解决方法:将数字转换为字母。请参阅:。谢谢您的回答。这正是我所需要的。谢谢你的回答。'the.Cells(lRow,lColumn).Address'给了我一个“无效或不合格引用”错误。你复制了我答案中的代码了吗?在错误消息框中,单击“调试”,然后在即时窗口中键入
?“='TIME'!”和.Cells(lRow,lColumn).Address和“/'TIME'!”和.Cells(lRow-1,lColumn).Address和“-1”
,按return并查看返回值第一个=符号后有一个空格,我出于某种原因给出了错误。现在它工作得很好。