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


0

我有以下情况:

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

当B列中的值是数字时,我有一个条件格式,整个行都被染成红色。如果可能,我在vba中需要以下内容:

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

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

对于行数发生变化的整个工作表,这可能吗?如果是这样,怎么办?

谢谢您的帮助。如果需要进一步说明,请随时提出。


您已经解释了想要的内容,但是您尝试了什么?我们在这里可以帮助您解决问题,但这不是脚本编写服务。
CharlieRB

我已经到了脚本可以正确识别参数的地步(哪些单元格需要为空,哪些单元格不需要为空,依此类推)。但是我不知道如何复制正确的数据。对于造成的麻烦,我深表歉意。
Morrog 2015年

Answers:


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列中,并且只要工作表上发生更改,就会执行该数据。


我确实能够使用此代码,对其进行修改并使其起作用。感谢您的时间!
Morrog 2015年

0

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

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

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

现在,C列将以您想要的方式提供信息

对于单元格C1输入:

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

谢谢您的回答。但是我确实需要VBA中的解决方案。可能只是我需要在A1中查找一个值,然后将其复制到A6(因为B6是数字)。这些行并不总是彼此重叠。
Morrog
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.