我需要在 B 列中查找重复项;然后如果 A 列中的值为数字 4,则删除整行。有些行需要保留,并且 A 列中的值为“4”。
A B
1, John
4, John
1, Mary
4, Mary
1, Aaron
1, Scott
4, Jeff
4, Bob
当我完成后应该看起来像这样:
A B
1, John
1, Mary
1, Aaron
1, Scott
4, Jeff
4, Bob
答案1
试试这个。请注意,您需要更改工作表名称和左上角单元格地址以匹配您的数据。
Sub RemoveRows()
Dim rng1 As Range, sht1 As Worksheet
Dim iRow As Long
'Change sheet name and top-left cell address to match your data.
Set sht1 = Sheets("Sheet1")
Set rng1 = sht1.Range("A1")
For iRow = rng1.End(xlDown).Row To rng1.Row Step -1
If Cells(iRow, 1) = 4 Then
If Application.WorksheetFunction.CountIf(rng1.Resize(rng1.End(xlDown).Row, 1).Offset(0, 1), Cells(iRow, 2)) > 1 Then
Cells(iRow, 1).EntireRow.Delete
End If
End If
Next iRow
End Sub
答案2
通过辅助列和数据透视表,我能够得到您想要的结果。我假设 A 列中的值只能是 1 或 4。(也许这是一个错误的假设???)
在 C1 中,我输入了一个列名“nameID”。
在 C2 中,我输入了值 1。
在 C3 中,我输入了这个公式并将其一直复制下来:
=IF(B3=B2,C2,C2+1)
接下来,我对 A:C 列中的数据进行了透视,并选择“a”的“最小值”选项:
最后,在数据透视表旁边,我写下了这个连接公式,假设第一个数据透视表单元格是 F3:
=H3 & ", " & G3
也许这个截图可以帮助澄清。最终结果在 J 列: