比较列B和C,然后移动数据
我需要比较列B和C.它们只包含实数,按升序sorting。
我已经有了我想要的代码,但是我需要帮助改变代码中的范围。
所以目前的代码比较列B和C.
我需要帮助改变代码,所以我可以在A的左边添加一列,也可以在D的右边添加一列,并添加这些列来移动范围。
基本上,比较E和F,并移动B:E
和F: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:
你可以匹配需要匹配的数据:
这是另一个vlookup列:
然后,一旦你的数据相匹配 – 你可以将其全部转换为复制和粘贴值:
然后你添加你的最大列:
然后,你只要sorting,你应该得到你想要的:
然后,您可以删除任何不需要的额外数据:
所以希望这可以帮助你。 你想要使用VBA的唯一原因是如果你想自动化这个过程 – 但是如果这是一次性的事情,那将是非常耗时的。 Excel意在操纵数据 – 匹配表格 – 类似的东西 – 用于此目的。