Vba 获取旁边单元格行的值,否则将有一个空白单元格&;公式

Vba 获取旁边单元格行的值,否则将有一个空白单元格&;公式,vba,excel,excel-formula,Vba,Excel,Excel Formula,是否有一种方法,最好是通过excel公式,也可以通过VBA获得它旁边的单元格,如果没有值,则返回空白?如果有值,则返回给定的数字。空白,因为其中没有数据,甚至a=A1 举个例子 列A有一个公式,每行向下给出1、2、3。在B列中,我有一个公式,它获取它旁边的值(A1、A2等),但它只显示为空,公式仍然存在 我也知道如何简单地复制和粘贴特殊的,这可以被视为一个解决办法,但我只是好奇,如果有更好的方法来做到这一点 Sub CopyCol() Sheets("Sheet3").Co

是否有一种方法,最好是通过excel公式,也可以通过VBA获得它旁边的单元格,如果没有值,则返回空白?如果有值,则返回给定的数字。空白,因为其中没有数据,甚至a=A1

举个例子 列A有一个公式,每行向下给出1、2、3。在B列中,我有一个公式,它获取它旁边的值(A1、A2等),但它只显示为空,公式仍然存在

我也知道如何简单地复制和粘贴特殊的,这可以被视为一个解决办法,但我只是好奇,如果有更好的方法来做到这一点

  Sub CopyCol()

        Sheets("Sheet3").Columns(10).Copy

        Sheets("Sheet3").Columns(10).PasteSpecial xlPasteValues

End Sub 
谢谢。

用这个:

Option Explicit

Public Sub CopyCol()
    Dim ur As Range, col1 As Variant, col2 As Variant, r As Long

    Set ur = ThisWorkbook.Sheets("Sheet3").UsedRange

    ur.Columns("B").Clear
    col2 = ur.Columns("B")
    col1 = ur.Columns("A")

    If Not IsEmpty(col1) Then
        If IsArray(col1) Then
            For r = 1 To UBound(col1)
                If Len(col1(r, 1)) > 0 Then col2(r, 1) = col1(r, 1)
            Next
        Else
            col2 = col1
        End If
        ur.Columns("B") = col2
    End If
End Sub

您是否尝试将B列的数字格式更改为;;;(三个分号)?列B仍将存储公式,但不会显示其值。@RomcelGeluz我是否已尝试将数字格式更改为;;;在excel中?我当时就试过了,它看起来只是返回所有B列单元格的空格,但公式仍然有效。我想要类似于=A1的东西,如果左边的单元格中没有值,那么它就不会给出公式&blank。这个任务确实需要VBA。给我一两分钟试试。