对齐 excel 中的匹配单元格(vbs,宏)

Aligning Matching cells in excel (vbs, macro)

更新(新问题) 此代码会自动隔离那些没有匹配项的。但是,有什么办法可以隔离那些匹配的吗?


TL;DR 版本 所以,基本上,下面是用于匹配 excel 中的单元格的代码,但它不匹配 一切,即使其中一些确实匹配 这是发生的示例:

          A        B
....
2383           一時間
....
25498    一時間

什么时候应该是

          A        B
....
2383      一時間   一時間    


详情:

http://www.mediafire.com/download/q7ym8qb41ywri0c/Soverflow.txt 附件是用于导入 excel.

的制表符分隔文本

所以,我一直在寻找一种解决方案,用于对齐列中的匹配单元格,但除此之外,它还应该将一行中的其他单元格与移动的内容对齐。我将使用 没有任何匹配项的单元格 用于我自己的目的

它适用于某些单元格,但它不适用于其他单元格,所以我认为代码一定有什么地方没有做。

例如,如果您 运行 代码,您会在单元格 B2383 处看到 一時間,但如果您按 CTRL+F 进行其他匹配,您会发现它再次出现在 A25498 单元格中。他们应该像其他比赛一样对齐,但出于某种奇怪的原因,它没有。

我是不是用错了宏?我只是将代码复制粘贴到 Developer>Macros>Create>Alt+Q,然后我 运行 它。

Sub test() 
    Dim a, i As Long, ii As Long, w, x, n As Long 
    With Range("a3").CurrentRegion 
        a = .Value 
        .ClearContents 
        With CreateObject("Scripting.Dictionary") 
            For i = 1 To UBound(a, 1) 
                If a(i, 1) <> "" Then 
                    If Not .exists(a(i, 1)) Then 
                        Redim w(1 To UBound(a, 2)) 
                        w(1) = a(i, 1): .Item(a(i, 1)) = w 
                    End If 
                End If 
            Next 
            For i = 1 To UBound(a, 1) 
                If a(i, 2) <> "" Then 
                    If Not .exists(a(i, 2)) Then 
                        Redim w(1 To UBound(a, 2)) 
                    Else 
                        w = .Item(a(i, 2)) 
                    End If 
                    For ii = 2 To UBound(a, 2) 
                        w(ii) = a(i, ii) 
                    Next 
                    .Item(a(i, 2)) = w 
                End If 
            Next 
            x = Application.Transpose(Application.Transpose(.items)) 
            n = .Count 
        End With 
        .Resize(n).Value = x 
    End With 
End Sub 

感谢编写代码的人。

您在代码开头的当前区域不准确。

删除空白行,看看情况如何变化。