Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 比较和插入行(VBA)_Excel_Vba - Fatal编程技术网

Excel 比较和插入行(VBA)

Excel 比较和插入行(VBA),excel,vba,Excel,Vba,我正在尝试使用excel文件: 比较G列和H列 -如果它们有相同的文本->转到下一行继续比较 -如果它们没有相同的文本->在G下面插入一行,然后继续比较 结果是: 运行宏之前(第一列为G,第二列为H): 运行宏后: 你能帮我做这个吗 非常感谢。像这样的东西 Sub CompArray() Dim G Dim H Dim X Dim lngCnt As Long Dim lngMark As Long G = Range([g1], Cells(Rows.Count, "G").End(xl

我正在尝试使用excel文件:

比较G列和H列
-如果它们有相同的文本->转到下一行继续比较
-如果它们没有相同的文本->在G下面插入一行,然后继续比较

结果是:

运行宏之前(第一列为G,第二列为H):

运行宏后:

你能帮我做这个吗

非常感谢。

像这样的东西

Sub CompArray()
Dim G
Dim H
Dim X
Dim lngCnt As Long
Dim lngMark As Long

G = Range([g1], Cells(Rows.Count, "G").End(xlUp))
H = Range([H1], Cells(Rows.Count, "H").End(xlUp))
X = H

For lngCnt = 1 To UBound(X, 1)
If G(lngCnt - lngMark, 1) = H(lngCnt, 1) Then
X(lngCnt, 1) = G(lngCnt - lngMark, 1)
Else
lngMark = lngMark + 1
X(lngCnt, 1) = vbNullString
End If
Next

[g1].Resize(UBound(X), 1) = X

End Sub

可以选择要查看的范围,然后在行中循环。 比较单元格,如果它们不相同,请选择正确的单元格。 然后插入新单元格,并将所有内容向下移动到1个单元格 这段代码有点慢,因为它选择了整个列。 您可以更改compare语句以进行不同的比较

Dim rngCompare As Range
Dim rowCount As Long
Dim iCount As Long

Set rngCompare = ActiveSheet.Columns("D:E")
rowCount = rngCompare.Rows.Count
For iCount = 1 To rowCount
If StrComp(rngCompare.Cells(iCount, 1), rngCompare.Cells(iCount, 2), vbTextCompare) <> 0 Then
    rngCompare.Cells(iCount, 1).Select
    Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove

End If
Next iCount
Dim rngCompare As范围
暗行数与长行数相同
暗i计长
Set rngCompare=ActiveSheet.Columns(“D:E”)
rowCount=rngCompare.Rows.Count
对于iCount=1的行计数
如果StrComp(rngCompare.Cells(iCount,1)、rngCompare.Cells(iCount,2)、vbTextCompare)为0,则
rngCompare.Cells(iCount,1)。选择
选择。插入Shift:=xlDown,CopyOrigin:=xlFormatFromLeftOrAbove
如果结束
下一个iCount

发布您的代码,向我们展示您目前拥有的内容。我甚至不知道我是否走上了正确的道路:Dim lCounter只要“顺便说一句,那里的列不同,我现在正在处理另一个文档。到目前为止,我无法让它工作,它进入了一个无限循环,但我可以开始处理这个文档。非常感谢!:)您的数据是否如您在样本中所示?我的代码将在GYeah列中的单元格数量相同的情况下运行。事实上,这不是一个无限循环,这发生在其他代码中,对不起。复制/粘贴代码并运行它会删除G列中的所有内容。听起来不错,G列应该更新为与H匹配-除非插入行后没有匹配项。因此,似乎我终于让它工作了!:)唯一剩下的就是让公式从第11行开始,而不是从第1行开始,这样就完成了。非常感谢你的帮助,没有你的帮助我是做不到的。(我不能粘贴公式,它说它太长了:/)嘿,花点时间也没关系。:)但它会问我是否要继续,因为该操作会导致一些合并的单元格取消合并,然后在无限循环中向下移动第四列。如果G中的所有值都存在于H中,则该操作似乎有效。但当G中的值不存在时,它会开始在无限循环中插入白色行。