如果单元格不为空,如何从前一行复制不同列中的值?

如果单元格不为空,如何从前一行复制不同列中的值?

我有以下情况:

A                   B
19260218 234 77     ok
                    3
                    ok
19310328 174 46     2

当 B 列中的值为数字时,我有一个条件格式,即整行都为红色。如果可能的话,我需要在 vba 中进行以下操作:

如果 B 列中的值为数字且 A 列(在同一行)中的单元格为空,则将之前遇到的值从 A 列复制到目标行。在这种情况下(不计算标题):B2 = 数字且 A2 = 空,因此将 A1 复制到 A2

B4 也是数字,但由于 A4 不为空,因此不需要复制任何内容。

对于行数发生变化的整个工作表,这种情况可能发生吗?如果可以,怎么做?

感谢您的帮助。如果我需要进一步解释,请随时询问。

答案1

将此 VBA 代码放入工作表中:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim wks As Worksheet
Set wks = ActiveSheet
cellempty = False
i = 1
'Check the max. number of rows
While cellempty = False
    a = Cells(i, 2)
    If a = "" Then
        finalrow = i - 1
        cellempty = True
    End If
    i = i + 1
Wend
'Going row by row
For i = 1 To finalrow
    If IsNumeric(Cells(i, 2)) Then 'check if cell in column B is numeric
        If Cells(i, 1) = "" Then 'check if cell in column A is empty
            'goes upward on column A to find a non-empty value
            For j = i To 1 Step -1
                If Cells(j, 1) <> "" Then
                    Cells(i, 1) = Cells(j, 1) 'copy value to cell
                    j = 1
                End If
            Next j
        End If
    End If
Next i
End Sub

这是非常基本的东西,您可以对其进行改进以更好地适应您的需求。它假设数据在 A 列和 B 列中,并且只要工作表发生更改就会执行。

答案2

您可以在单元格 C2 中输入以下内容:

=IF(ISNUMBER(B2),IF(A2="",A1,A2),IF(A2="","",A2))

并将公式复制到 C3、C4、C5...

现在 C 列将按您想要的方式显示信息

对于单元格 C1 输入:

=IF(A1="","",A1)

相关内容