根据匹配数据从一个文档复制/粘贴到另一个文档

时间:2018-12-14 12:25:33

标签: excel vba

在开始之前,我对在Excel中创建宏一无所知,尽管我希望有人留下一个可以正常工作的解决方案,但我也非常感谢朝着正确方向的一点希望尝试自己写点东西。

我正在尝试制作一个从Apple的“ Apple Music Play Data.csv”中获取的音乐数据的电子表格,该电子表格的设置如下:

Song1, Artist1, Album1

Song1, Artist1, Album1

Song1, Artist1, Album1

Song2, Artist1, Album1

Song2, Artist1, Album1

行数等于播放歌曲的次数(上面的示例是Song1 playcount = 3,Song2 playcount = 2)。

但是,“专辑”字段中的大多数为空白或不正确。我还有另一个文档,其中每首歌曲都对应于其艺术家和专辑,如下所示:

Song1, Artist1, Album1

Song2, Artist1, Album1

Song3, Artist1, Album1

Song4, Artist2, Album2

我的问题是,如何创建一个宏来从Apple文档中获取歌曲和歌手,在另一个文档中搜索匹配项,然后将专辑名称从我的文档复制到Apple文档中的正确单元格中?我找到了与我所寻找的答案相似的答案,但是我仍然遇到一些问题。这是我找到并编辑的代码,其中w1(Sheet2)是我的文档,w2(Sheet1)是Apple的文档:

Sub Test()

 Dim w1 As Worksheet, w2 As Worksheet
 Dim c As Range, FR As Long

 Application.ScreenUpdating = False

 Set w1 = Workbooks("Book2.xlsx").Worksheets("Sheet2")
 Set w2 = Workbooks("Book2.xlsx").Worksheets("Sheet1")


 For Each c In w1.Range("A2", w1.Range("A" & Rows.Count).End(xlUp))
     FR = 0
     On Error Resume Next
     FR = Application.Match(c, w2.Columns("A"), 0)
     On Error GoTo 0
     If FR <> 0 Then w2.Range("C" & FR).Value = c.Offset(0, 2)
 Next c
 Application.ScreenUpdating = True
End Sub

问题是,首先,这仅是按歌曲标题进行搜索,而不是按歌曲标题和艺术家进行搜索。如果多个艺术家具有相同的歌曲标题,这将是一个问题。其次,Apple文档的输出仅在歌曲首次出现时发生,例如

Song1, Artist1, CorrectAlbum1

Song1, Artist1, BlankAlbum1

Song1, Artist1, BlankAlbum1

Song2, Artist1, CorrectAlbum1

Song2, Artist1, BlankAlbum1

在这一点上,我根本不知道我应该添加或更改什么以获得期望的结果,也不清楚我使用的代码的含义。任何建议将不胜感激。

谢谢!

0 个答案:

没有答案