如果第一列值与指定的单元格值匹配,则VBA将行移动到另一个工作表

时间:2014-12-10 13:24:14

标签: vba sorting

我遇到了解决我的Excel数据库排序问题的问题。我是一个相当高级的excel用户,但有了这个问题我猜我别无选择,只能挖掘VBA,从我的VBAnewbie的角度来看,这看起来绝对是无穷无尽的。这就是为什么我决定寻找有经验的爱好者来帮助我的原因。

我搜索了多个论坛并回答了这类问题,但这些都没有帮助我让我的排序程序工作(好吧,这也是我根本不了解VBA的问题,也不是有足够的时间来试验和错误)。

所以这里是:

我有一张名为: BASE 的Excel工作表,包含大量数据(数据填充范围为A2:J60000):

https://www.dropbox.com/s/d2zwdb98idda379/BASE.JPG?dl=0

然后我有一个名为 Class1 的目标表:

https://www.dropbox.com/s/kwa0mbyiksytnyo/Class1.JPG?dl=0

如果匹配某个值,我需要对数据进行排序。不只是搜索或复制行,而是移动(或复制/粘贴然后删除而不留空行)。因此,基本的Excel索引/匹配或V / H查找对我来说没有任何好处。

我的程序步骤是:

  1. 我将数据写入工作表Base(这个我不需要VBA) - 数据只是普通的值和文本,没有特殊的格式化。
  2. 然后我在目标表格的单元格“A1”中输入值“X”(例如:“1”,因为它在Class1中显示为黄色):“Class1” - 也 - 没有VBA
  3. 现在我需要VBA帮助
  4. 3.1。要“浏览”工作表 BASE

    中的整个列A

    3.2。寻找与目标表中的单元格A1值匹配的值。

    3.3。查找移动到此匹配数据行的空行(不覆盖目标表中的现有数据)

    3.4。最后将这些“值匹配”行(或范围A2:J2(A3:J3等))移动到目标工作表相应列。 (例如:将A2:J2移动到目标工作表A6:J6,因为ists为空)。

    非常感谢有关此问题的任何帮助!因为它会让我摆脱困境:)

    谢谢!

1 个答案:

答案 0 :(得分:0)

也许这样的事情?

Sub SO

Application.ScreenUpdating = False
Set shTarget = Sheets("Target Sheet") 'Change as required
Set shBase = Sheets("BASE") 'Change as required

For i = shBase.Range("A" & shBase.Rows.Count).End(xlUp).Row To 1 Step -1
  If shBase.Cells(i, 1).Value = shTarget.Cells(1, 1).Value Then
    shBase.Rows(i).EntireRow.Copy _
    Destination:= shTarget.Rows(shTarget.Cells(shTarget.Rows.Count, 1).End(xlUp).Row + 1).EntireRow
    shBase.Rows(i).EntireRow.Delete Shift:=xlUp
  End If
Next i

Application.CutCopyMode = False

Set shTarget = Nothing
Set shBase = Nothing
Application.ScreenUpdating = True
End Sub