Excel VBA-根据另一列中的值填充一列中的单元格

时间:2018-11-15 13:52:50

标签: excel vba excel-vba

首先,对不起,直截了当-我只是通过编码开始冒险,而我在下面的问题上有点卡住...

我有一个文件,其中包含产品名称和价格。 产品名称是重复的,价格也是如此。 我想要一个宏,该宏将读取包含产品名称(B)的列,然后从C列复制价格,以便所有具有相同名称的产品都具有相同的价格。之后,该宏应在所有包含产品名称和价格的行中放置零(D至F列)。

我已经花了两天时间来解决这个问题,但我似乎唯一正确的方法是:

price = Range("C2").Value
If price > 0 Then
Range("D2:F2") = 0
End If

我可以在所有行中重复此操作,这不是问题...但是问题的第一部分使我望而却步,这似乎是光年。

有没有一个我所缺少的简单解决方案?

What the file looks before:

What it should look like after:

编辑: 我还有一个非常粗糙且麻烦的解决方案来复制价格:

If Range("B5") = Range("B2") Then
Range("C2").Select
Range("C2").Copy
Range("C5").Select
Range("C5").PasteSpecial
End If

但是我意识到这将需要恒定数量的产品(不是这样-可以是2,可以是两打)...所以我对此并不满意。

1 个答案:

答案 0 :(得分:1)

我很快就看了你想要的照片,看看是否是这样。

    Dim vLR As Long, vC, l, c  'l = line and c= column

    vLR = Cells(Rows.Count, 1).End(xlUp).Row 'vLR =  variable Last Row

    vC = 0 'vC = variable Columns you have
    c = 4 ' starting on the 4 column
    Do While vC < 3 '3 columns availability /ordered/sold
        l = 2
        Do While vLR >= l
            If Cells(l, c) = "" Then
                Cells(l, c) = 0
            End If
            l = l + 1
        Loop
        c = c + 1
        vC = vC + 1
    Loop
End Sub