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

标签 vba excel

我需要比较 B 列和 C 列。它们仅由实数组成,按升序排序。

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

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

Look at this image for more clear explanation.

我需要帮助更改代码,以便我可以在 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

最佳答案

您不需要宏来执行您想要执行的操作(除非您出于某些奇怪的原因尝试自动执行此操作。

您可以复制并粘贴 D 和 C 列,使其位于其他数据下方(见图),然后添加第 5 列,即 B 和 C 列的最大值(这将获取数字):

Answer Before

然后你只需要对 max 列进行排序:

Answer After

编辑:

好的,这是非常基本的 excel,所以我将发布带有一些小方向的屏幕截图。基本上你想要做的(我不知道你是否意识到这一点)是组合两个表(当然它是以一种非常奇怪的方式)。因此,如果您按照我的原始说明进行操作,除了创造性地使用 vlookup 之外,您绝对可以完成您正在尝试做的事情。以下是截图:

所以创造性地使用 vlookup:
Original

您可以对需要匹配的数据进行匹配:
Vlookup1

这是另一个 vlookup 列:
Vlookup2

然后,一旦您的数据匹配 - 您可以通过复制和粘贴将其全部转换为值:
CopyPasteValues

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

然后你只需排序,你应该得到你想要的:
WhatYouWant

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

所以希望这可以帮助你。您想要使用 VBA 的唯一原因是如果您想要自动化此过程 - 但如果这是一次性的事情,那么这将过于耗时。 Excel 旨在处理数据 - 匹配表格 - 诸如此类的东西 - 将其用于此目的。

关于vba - 比较 B 列和 C 列,然后移动数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11797743/

相关文章:

sql - 我试图在 ADO Excel 中使用的这个 UPDATE 语句有什么问题?

arrays - 公式中的多个数组

arrays - 如何添加数组?

excel - VBA删除数组中包含相同值的重复值

excel - 打开工作簿时,Worksheet_Activate 不会运行,即使我调用sheet.Activate

excel - 如何在Excel中使用单位缩写?

excel - 如何在 Powershell 脚本中使用 VBA 代码

excel - 选择范围内的形状。奇怪的看似随机的结果?

vba - 我有这个引用的类型不匹配错误

VBA 处理多种自定义数据类型的可能性