我对编码还很陌生,所以我会很简短。我有一个非常大的数据集要在 excel 中处理。从两个电子表格中,我将数据汇总在一起。
所以每组有4列。一列包含数据点的字母数字名称。(例如,NC000023、NC000224 等)。我想将匹配的字母数字名称与一张纸排列到另一张纸上。首先想到的是按字母顺序对两列进行排序,这确实最匹配。但是,从一张到另一张缺少一些数据点,导致整个数据出现多个帧移位。
我编写了以下宏来纠正这些移码。
第一个只是确定两列是否在特定行中匹配
Sub Matching()
'
' Macro1 Macro
'
' Keyboard Shortcut: Ctrl+m
'
Range("I2").Select
ActiveCell.FormulaR1C1 = "=EXACT(RC[-4],RC[-5])"
Range("I2").Select
Selection.AutoFill Destination:=Range("I2:I40028"), Type:=xlFillDefault
这会根据 D3 数学 E3 和 D550 是否与 D550 等匹配,生成一个 TRUE 为 FALSE 的新列。
然后,我找出 I 列中的所有单元格为 FALSE,并确定我需要删除哪些 4 个单元格以更正该匹配。该代码旨在消除罪魁祸首,将其粘贴,并将较低的行向上移动以取代它。
Sub RedCut()
'
' Macro2 Macro
' Shortcut CTRL + r
'
ActiveCell.Offset([0], [-3]).Select
Range(ActiveCell, ActiveCell.Offset(0, 3)).Cut
ActiveCell.Offset([0], [12]).Select
ActiveSheet.Paste
ActiveCell.Offset([0], [-12]).Select
Range(ActiveCell, ActiveCell.Offset(0, 3)).Select
Selection.Delete Shift:=xlUp
End Sub
而对于另一个
Sub Bluecut()
'
' Bluecut Macro
'
' Keyboard Shortcut: Ctrl+b
ActiveCell.Offset([0], [3]).Select
Range(ActiveCell, ActiveCell.Offset(0, -3)).Cut
ActiveCell.Offset([0], [9]).Select
ActiveSheet.Paste
ActiveCell.Offset([0], [-9]).Select
Range(ActiveCell, ActiveCell.Offset(0, -3)).Select
Selection.Delete Shift:=xlUp
'
End Sub
编写完这些宏后,我一直在执行以下步骤。
- 按 CTRL+M 调用匹配的标题行的 TRUE 或 FALSE 列表
- 用 FALSE 找出一行。确定是需要删除数据集 1 还是数据集 2 中的四个单元格
- 再次按 CTRL + M,并更正该行。
我的问题是,是否可以编写一个代码,如果 D 列中的相应单元格与左侧和下方的一个单元格相同,则对 I 列中具有 FALSE 的行执行 Sub Bluecut,或者对一行执行 Sub Redcut如果 D 列中的相应单元格与右上方的一个单元格相同,则列中为 FALSE。”
抱歉,当我开始打字时,这似乎不太复杂。我将不胜感激您能给我的任何帮助,即使它只是编写一小段代码的提示。
提前致谢。