excel vba查找唯一值的第一个位置,从下面的行中复制值,然后粘贴到上方的行中

时间:2018-07-18 19:48:46

标签: excel vba excel-vba

我已经看了很多,但是还没有找到答案。我有一组数据,需要在其中找到第一个串联在A和B列中的唯一值,然后移到下面的行,从C:E列复制信息,并将其粘贴到上面的行中。然后重复下一个唯一值。

我可能可以弄清楚复制和粘贴的部分,但是还没有弄清楚如何找到每个唯一值及其位置。

下面是数据样本。因此,基本上我需要先找到AustriaEUR,移动到下一行,复制到第1,2和3列的值,然后粘贴到上面的行中,然后再移动到澳大利亚,依此类推。

Country     Currency    1       2       3
Austria     EUR         null    null    null
Austria     EUR         8.16    8.39    8.73
Austria     EUR         7.94    8.16    8.5
Austria     EUR         7.26    7.49    7.83
Austria     EUR         6.24    6.47    7.06
Australia   AUD         null    null    null
Australia   AUD         8.37    8.59    8.93
Australia   AUD         8.14    8.37    8.71
Australia   AUD         7.46    7.69    8.03
Australia   AUD         7.35    7.58    7.91
Australia   AUD         6.47    6.53    6.61
Belgium     EUR         null    null    null
Belgium     EUR         8.16    8.39    8.73
Belgium     EUR         7.94    8.16    8.5
Belgium     EUR         7.26    7.49    7.83
Belgium     EUR         6.24    6.47    7.06
Belgium     EUR         4.87    5.1     5.43
Belgium     EUR         4.15    4.37    4.71
Belgium     EUR         3.93    4.15    4.48

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

不是最干净的解决方案,而是解决方案。

创建列A和B的串联值,然后在照顾了第一行之后,我们向下移动各行以查找下一个唯一值。注意-目前仅为20行数据设置此设置。您需要lastrow才能使其动态化。

Sub Test()

Dim myuniquevalue As String, nextvalue As String

myuniquevalue = Cells(2, 1).Value & Cells(2, 2).Value
Range(Cells(2, 3), Cells(2, 5)).Value = Range(Cells(3, 3), Cells(3, 5)).Value

For i = 2 To 20
    nextvalue = Cells(i, 1).Value & Cells(i, 2).Value

    If myuniquevalue <> nextvalue Then
        myuniquevalue = nextvalue
        Range(Cells(i, 3), Cells(i, 5)).Value = Range(Cells(i + 1, 3), Cells(i + 1, 5)).Value
    End If
Next i

End Sub

img1