比较excel中的两列,插入空白行并移动相关数据

在这里输入图像说明

我在列A,B,C,D中input了单元格,并且我希望inputF,G,H,I中的结果,所以我应该在单元格中插入什么公式

F3将是:

=IF(ISERROR(MATCH(ROW()-2,A:A,0)),"",ROW()-2) 

和G3:

 =IF(LEN(F3),INDEX(B:B,MATCH(F3,A:A,0)),"") 

根据需要复制F3:G3到H3:I3和“自动填充”

在这里输入图像说明

如果您想要使用macros,那么只需将这些代码复制到Visual Basic编辑器中的模块中并运行即可。

 Sub insertRows() Columns("G:J").EntireColumn.Delete Dim lrow As Long: lrow = Range("A" & Rows.Count).End(xlUp).Row Dim brng As Range: Set brng = Range("A1:D" & lrow) brng.Copy Range("G1"): Range("G1").Value = "After" Dim arng As Range: Set arng = Range("G3:G" & lrow) Dim rng As Range For Each rng In arng If rng <> rng.Offset(, 2) Then If rng > rng.Offset(, 2) Then rng.Resize(, 2).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove Else rng.Offset(, 2).Resize(, 2).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove End If End If Next rng End Sub 

OMG,这个很难,但是这些是你可以尝试的公式:

cell F3

  = IF(AND(N(F2)= 0,F2 <> “”),1,IF(AND(NOT(COUNTIF($ A $ 3:$ A $ 22 MIN(INDEX($ A $ 3:$ A $ 22 MATCH (MAX(F $ 2:F2,H $ 2:H 2),$ A $ 3:$ A $ 22,1)+1),INDEX($ C $ 3:$ C $ 22 MATCH(MAX(F $ 2:F2,H $ 2: H2),$ C $ 3:$ C $ 22,1)+1)))),INDEX($ A $ 3:$ A $ 22 MATCH(MAX(F $ 2:F2,H $ 2:H 2),$ A $ 3:$甲$ 22,1)+1)), “”,INDEX($ A $ 3:$ A $ 22 MATCH(MAX(F $ 2:F2,H $ 2:H 2),$ A $ 3:$ A $ 22,1)+1 ))) 

cell G3

  = IF(N(F3),INDEX(B:B,MATCH(F3,A:A,0)), “”) 

cell H3

  = IF(AND(N(H 2)= 0,H2 <> “”),1,IF(AND(NOT(COUNTIF($ C $ 3:$ C $ 22 MIN(INDEX($ C $ 3:$ C $ 22 MATCH (MAX(H $ 2:H 2,F $ 2:F2),$ C $ 3:$ C $ 22,1)+1),INDEX($ A $ 3:$ A $ 22 MATCH(MAX(H $ 2:H 2,F $ 2: F2),$ A $ 3:$ A $ 22,1)+1)))),INDEX($ C $ 3:$ C $ 22 MATCH(MAX(H $ 2:H 2,F $ 2:F2),$ C $ 3:$ C $ 22,1)+1)), “”,INDEX($ C $ 3:$ C $ 22 MATCH(MAX(H $ 2:H 2,F $ 2:F2),$ C $ 3:$ C $ 22,1)+1 ))) 

cell I3

  = IF(N(H3),INDEX(d:d,MATCH(H3,C:C,0)), “”) 

基本上,这两个公式在DebitCredit列下非常相似,只是交换范围引用。 试着让我知道。