仅当列上方存在Excel VBA中的数据(如名称)时,才复制和粘贴列

仅当列上方存在Excel VBA中的数据(如名称)时,才复制和粘贴列,vba,excel,Vba,Excel,我使用StackOverflow已经有一段时间了,我很喜欢这个社区。我知道我有希望得到任何问题的答案 好的,这是我的问题,我一直在执行一个“弗兰肯斯坦”的脚本从几个职位在这个网站上。我想在特定的标题下复制并粘贴一列数组公式,直到没有更多的标题为止。例如,在F5到W5行中,如果有一个名称,我想复制下面有一个数组公式的区域,比如在F156:F323范围内,然后将该公式粘贴到G列H列下的名称中,依此类推,直到该范围之间没有更多的名称 下面是我试图解决它,但我不断地得到错误 Dim lastCol As

我使用StackOverflow已经有一段时间了,我很喜欢这个社区。我知道我有希望得到任何问题的答案

好的,这是我的问题,我一直在执行一个“弗兰肯斯坦”的脚本从几个职位在这个网站上。我想在特定的标题下复制并粘贴一列数组公式,直到没有更多的标题为止。例如,在F5到W5行中,如果有一个名称,我想复制下面有一个数组公式的区域,比如在F156:F323范围内,然后将该公式粘贴到G列H列下的名称中,依此类推,直到该范围之间没有更多的名称

下面是我试图解决它,但我不断地得到错误

Dim lastCol As Long
Dim i As Long
Dim ws As Worksheet
Dim Formula As Range

Set ws = Sheets("Main")
lastCol = ws.Range("F" & Columns.Count).End(xlRight).Column
Set Formula = Sheets("Main").Range("F156:F323")

With ws
    For i = 6 To lastCol
    If len(trim.range("F" & i).Value)) <> 0 then _
    .Range(i & 156).formulaarray = 'my formula here'
Next i
End With
Dim lastCol尽可能长
我想我会坚持多久
将ws设置为工作表
作为范围的Dim公式
设置ws=图纸(“主”)
lastCol=ws.Range(“F”和Columns.Count).End(xlRight).Column
设置公式=图纸(“主”)范围(“F156:F323”)
与ws
对于i=6到lastCol
如果len(微调范围(“F”&i).Value))为0,则_
.Range(i&156).formulaarray='my formula here'
接下来我
以

发布您可能有的任何问题,谢谢

在许多情况下,您正在翻转列和行

使用范围对象
单元格
,而不是
范围
。它允许使用数字而不是字母的列引用

直接指定公式

Dim lastCol As Long
Dim i As Long
Dim ws As Worksheet
Dim Frmla As Range

Set ws = Sheets("Main")
lastCol = ws.Cells(5, ws.Columns.Count).End(xlToLeft).Column
Set Frmla = ws.Range("F156:F323")

With ws
    For i = 6 To lastCol
    If Len(Trim(.Cells(5, i).Value)) <> 0 Then
        .Range(.Cells(156, i), .Cells(323, i)).FormulaR1C1 = Frmla.FormulaR1C1
    End If
Next i
End With
Dim lastCol尽可能长
我想我会坚持多久
将ws设置为工作表
变暗Frmla作为范围
设置ws=图纸(“主”)
lastCol=ws.Cells(5,ws.Columns.Count).End(xlToLeft).Column
设置Frmla=ws.范围(“F156:F323”)
与ws
对于i=6到lastCol
如果Len(Trim(.Cells(5,i).Value))为0,则
.Range(.Cells(156,i),.Cells(323,i)).FormulaR1C1=Frmla.FormulaR1C1
如果结束
接下来我
以

Gah。打败我xdahhh,让我试试,谢谢Scott Craner!lastCol=ws.Range(5,ws.Columns.Count).End(xlToLeft).column错误消息如下:运行时错误“1004”:对象“\u工作表”的方法“Range”失败这不是我在代码中看到的。我有
lastCol=ws.Cells(5,ws.Columns.Count).End(xlToLeft).Column
我有单元格,没有范围。