2015-11-05 21 views
1

我在列A中有一个范围,并且我想为范围A的每个元素写入单元格B中的某个东西。我正在使用此代码,但它似乎不起作用:从列A复制范围并写入列B

LastRow = Cells(Rows.Count, "A").End(xlUp).Row 
    Set rng2 = Range("A:A" & LastRow).Select 

    For Each Cell In rng2 
     Cell.Offset(1, 0).FormulaR1C1 = "=isOK" 
    Next Cell 

我想在B列写在A中的最后一个单元格是1887年:

enter image description here

任何人都可以帮助吗?

回答

1

我纠正你的代码,不妨一试:

Dim Cell as Range, LastRow As Long 
LastRow = Cells(Rows.Count, "A").End(xlUp).Row 
Set rng2 = Range("A2:A" & LastRow) 

For Each Cell In rng2 
    If Cell.Value <> vbNullString Then Cell.Offset(0, 1) = "isOK" 
Next Cell 
+0

这给了我一个调试错误,如果Cell.Value <> vbNullString然后...它说类型不匹配 – Nant

+0

从你附加的图片,它看起来像列A是字符串值,如“331 HK” ,它不适用于数字。 –

+0

我编辑了我的答案,我想你想在B列中有“isOK”值,而且这不是函数。 –

1

设置RNG2 =范围( “答:” & LASTROW)。选择

这应设置RNG2 =范围( “A :A” & LASTROW)

和你的偏移电池下方,应为(0,1)

1

避免使用尽可能选择,这是一个麻烦来源。在这段代码中,你不需要使用它。 我想这ISOK是一个用户定义的函数(UDF):

LastRow = Cells(Rows.Count, "A").End(xlUp).Row 
    Set rng2 = Range("A2:A" & LastRow) 
    For Each Cell In rng2 
     If not IsEmtpy(Cell) Then Cell.Offset(1, 0).Formula = "=isOK()" 
    Next Cell 
+0

这给了我一个调试错误,如果Cell.Value <> vbNullString然后......它说类型不匹配 – Nant

+0

@Nant确定PLZ尝试编辑的代码,使用IsEmpty(单元格)。正如我在答案中所说的,我认为isOK()是在某些代码模块中定义的UDF。是这样吗? –

1

尝试,更好地与正常Excel公式:

=if(lookup(A1;C1:Z20)=0;"isOK";"notOK") 

复制到每一个细胞在B列,你会得到你预期的结果;)