在一个表中匹配/重新排列2组IDS

时间:2018-03-22 22:40:04

标签: sql excel vba csv

我有一个csv文件,其中包含4个ID字段(ID_1,ID_2,ID_3,ID_4)。这4个字段的组合在文件中是唯一的。问题是我正在尝试创建与4中任何一个相关联的所有ID的宽列表,并且在其他行中存在具有附加ID或空格的匹配。我想创建一个数据集,查找任何这些ID字段之间的匹配项,并为每个其他唯一值添加一列,以创建关联ID的完整列表。 合并应删除任何ID的重复。

enter image description here

1 个答案:

答案 0 :(得分:1)

我相信您的目标是合并ID匹配的任何行中的项目。我想出了一些解决这个问题的代码,但意识到这可能不是最好的方法,所以我不再追求它了。就目前而言,它假设ID行从纸张的左上角开始,并且代码仅用红色着色那些重复的ID。我在整个代码中放置了.select个语句,因此您可以逐步完成它,看看它是如何工作的。

但是如果你想继续,你可以添加代码来合并那些细胞红色的点。如果您这样做,请删除所有.select语句。

Option Explicit
Sub repeatedIDs()
Dim r As Range, cell As Range, remainingRows As Range
Dim lastRow As Range, i As Integer, j As Integer
Set r = Range("A2")
Set r = Range(r, r.End(xlDown).Offset(0, 3))
r.Select
Set lastRow = r.Rows(r.Rows.Count)
lastRow.Select
For i = 1 To r.Rows.Count - 1
  Set remainingRows = Range(r(i + 1, 1), r(r.Rows.Count, 4))
  remainingRows.Select
  For j = 1 To 4
    For Each cell In remainingRows
      cell.Select
      If cell = r(i, j) And cell <> "" And r(i, j) <> "" Then

        '*****   color cells with same ID red  *****
        cell.Font.Color = vbRed
        r(i, j).Font.Color = vbRed

      End If
    Next cell
  Next j
Next i
End Sub