比较列B和C,然后移动数据

我需要比较列B和C.它们只包含实数,按升序sorting。

我已经有了我想要的代码,但是我需要帮助改变代码中的范围。

所以目前的代码比较列B和C.

看看这个图像更清晰的解释。

我需要帮助改变代码,所以我可以在A的左边添加一列,也可以在D的右边添加一列,并添加这些列来移动范围。

基本上,比较E和F,并移动B:EF:I

 Option Explicit Sub AlignList() ' hiker95, 08/02/2012 ' http://www.mrexcel.com/forum/showthread.php?651139-Compare-Column-B-amp-C-and-Shift Dim r As Long, lr As Long, d As Range Application.ScreenUpdating = False lr = Cells.Find("*", , xlValues, xlWhole, xlByRows, xlPrevious, False).Row Set d = Range("A1:B" & lr) r = 1 Do While d.Cells(r, 2) <> "" If d.Cells(r, 2).Offset(, 1) <> "" Then If d.Cells(r, 2) < d.Cells(r, 2).Offset(, 1) Then d.Cells(r, 2).Offset(, 1).Resize(, 2).Insert -4121 ElseIf d.Cells(r, 2) > d.Cells(r, 2).Offset(, 1) Then d.Cells(r, 1).Resize(, 2).Insert -4121 lr = lr + 1 Set d = Range("A1:B" & lr) End If End If r = r + 1 Loop Application.ScreenUpdating = 1 End Sub 

你不需要一个macros来做你正在做的事情(除非你想自动执行一些奇怪的原因。

您可以复制并粘贴列D和C,使其低于其他数据(请参阅图片),然后添加列B和C的最大值(将获取数字)的第5列:

回答之前

然后你只需要在最大列上sorting:

回答之后

编辑:

好,所以这是非常基本的Excel,所以我只是要发布一些小方向的截图。 基本上你想做的事情(我不知道你是否意识到这一点)是结合了两个表格(当然,这是一个非常奇怪的方式)。 所以,如果你按照我原来的说明,除了创造性地使用vlookup,你完全可以完成你正在做的事情。 以下是截图:

所以创造性地使用vlookup: 原版的

你可以匹配需要匹配的数据: Vlookup1

这是另一个vlookup列: Vlookup2

然后,一旦你的数据相匹配 – 你可以将其全部转换为复制和粘贴值: CopyPasteValues

然后你添加你的最大列: MaxColumn

然后,你只要sorting,你应该得到你想要的: 你想要什么

然后,您可以删除任何不需要的额外数据: DeleteAnythingYouDoNotWant

所以希望这可以帮助你。 你想要使用VBA的唯一原因是如果你想自动化这个过程 – 但是如果这是一次性的事情,那将是非常耗时的。 Excel意在操纵数据 – 匹配表格 – 类似的东西 – 用于此目的。