VBA-在excel中排列数据值

VBA-在excel中排列数据值,excel,vba,Excel,Vba,抱歉,我是VBA新手。我已经使用该网站,以hep与一个问题,我有匹配的2列数据 IP26 5BN IP26 5BN IP26 5BN IP26 5DB IP26 5DB IP26 5DB IP26 5EL IP26 5EL IP26 5ET IP26 5EL IP26 5ET IP26 5ET IP26 5HN IP26 5ET IP26 5HR IP26 5HN IP26 5HR IP26 5HR IP26 5JA IP26 5JA

抱歉,我是VBA新手。我已经使用该网站,以hep与一个问题,我有匹配的2列数据

IP26 5BN    IP26 5BN
IP26 5BN    IP26 5DB
IP26 5DB    IP26 5DB
IP26 5EL    IP26 5EL
IP26 5ET    IP26 5EL
IP26 5ET    IP26 5ET
IP26 5HN    IP26 5ET
IP26 5HR    IP26 5HN
IP26 5HR    IP26 5HR
IP26 5JA    IP26 5JA
IP26 5JA    IP26 5JA
IP26 5NJ    IP26 5NJ
IP27 0DJ    IP27 0DJ
IP27 0DZ    IP27 0DZ
IP27 0ER    IP27 0ER
IP27 0JN    IP27 0JN
项目可以多次出现在A列和B列中,我希望将A列中的任何项目与B列中的匹配元素对齐,反之亦然,并在有额外“相同”值时在A和B列中插入一个空行

我必须这样做

Sub Expand()
Dim first_col As Range
Dim second_col As Range
Dim row As Integer

Set first_col = Range("A1:A17")
Set second_col = Range("B1:B17")

For row = 1 To second_col.Rows.Count
    If (first_col.Cells(row, 1).Value = second_col.Cells(row, 1).Value Or second_col.Cells(row, 1).Value = first_col.Cells(row, 1).Value) Then
    End If

        If first_col.Cells(row, 1).Value <> second_col.Cells(row, 1).Value Then
        second_col.Cells(row, 1).Insert shift:=xlDown
        ElseIf first_col.Cells(row, 1).Value = second_col.Cells(row, 1).Offset(1, 0).Value Then
        '// code to insert the row
        first_col.Cells(row, 1).Insert shift:=xlDown


    End If
Next row
End Sub
子扩展()
变暗第一列作为范围
变暗第二列作为范围
将行设置为整数
设置第一列=范围(“A1:A17”)
设置第二列=范围(“B1:B17”)
对于行=1到第二列行数
如果(第一列单元格(行,1).Value=第二列单元格(行,1).Value或第二列单元格(行,1).Value=第一列单元格(行,1).Value),则
如果结束
如果第一列单元格(行,1)。值第二列单元格(行,1)。值,则
第二列单元格(第1行)。插入移位:=xlDown
ElseIf第一列单元格(第1行)。值=第二列单元格(第1行)。偏移量(1,0)。然后值
'//插入行的代码
第一列单元格(第1行)。插入移位:=xlDown
如果结束
下一排
端接头
但是现在发生的事情是,第一个if在我认为应该返回“true”时并不总是返回“true”,因此当有重复项时,排列会向下一部分,或者它们与最后一行对齐


有什么建议吗?

如果块为空,您的第一个

你的意思是这样做吗

For Row = 1 To second_col.Rows.Count
    If (first_col.Cells(Row, 1).Value = second_col.Cells(Row, 1).Value Or second_col.Cells(Row, 1).Value = first_col.Cells(Row, 1).Value) Then
    'End If <-- Remove this

        If first_col.Cells(Row, 1).Value <> second_col.Cells(Row, 1).Value Then
        second_col.Cells(Row, 1).Insert shift:=xlDown
        ElseIf first_col.Cells(Row, 1).Value = second_col.Cells(Row, 1).Offset(1, 0).Value Then
        '// code to insert the row
        first_col.Cells(Row, 1).Insert shift:=xlDown
        End If '<-- Add this

    End If
Next Row
行=1到第二列行数的

如果(第一列单元格(行,1).Value=第二列单元格(行,1).Value或第二列单元格(行,1).Value=第一列单元格(行,1).Value),则

如果我不完全理解你的问题,就结束。但我假设您希望在活动单元格下方插入新行。 我想这可能对你有帮助

ActiveCell.Offset(1).EntireRow.Insert