如何在列中find所有“真”,并在每个真正的上面插入两行?

  AccountCode      
 01-80-07      
 03-24-00真的     
 00年3月24日      
 03-69-00      
 04-16-00真的     
 00年4月20日      
 00年4月21日      
 05-99-00真的     
 07-01-00真的     
 00年7月1日      
 00年7月10日      
 00年7月10日      
 94-40-95真的     

有人知道我需要什么吗? 专栏在B列,每个月可能有不同数量的trues和不同的间距。

编写一个函数,生成一个所有行号的数组,其中列“B”出现“True”,然后向后遍历数组(最后一个元素先处理),在需要的地方添加行。 这样您就不需要跟踪创build数组后所做的更改。

编辑:代码骨架

Sub DoTheThing() Dim indices() As Integer indices = getIndices Dim i As Integer For i = Len(indices) - 1 To 0 Step -1 Call AddRows(indices(i)) Next i End Sub Sub AddRows(index As Integer) ' Add two rows above the passed row index. ' End Sub Function getIndices() As Integer() ' Gather all indices of "True" rows to an array. ' End Function 

我只是创build一个“行”列,使用公式来查看是否有一个TRUE旁边的帐户代码,如果有,保持行号相同的两个额外的行。 如果没有,那么就进入下一行。

 行帐户代码   
  1 01-80-07   
  2      
  2      
  2 03-24-00真
  3 03-24-00   
  4 03-69-00   
 五      
 五      
  5 04-16-00真
  6 04-20-00   
  7 04-21-00   
  8      
  8      
  8 05-99-00真
  9      
  9      
  9 07-01-00真
 10 07-01-00   
 11 07-10-00   
 12 07-10-00   
 13      
 13      
 13 94-40-95真 

这里是你需要的公式。 “行”标签应位于单元格D2中。

 行帐户代码   
 1 = IF(D3 = D4,“”,INDEX(A $ 2:A $ 14,D3))= IF(D3 = D4,“”,IF(INDEX(B $ 2:B $ 14,D3)= TRUE,TRUE) “))
 = D1(INDEX(B $ 2:B $ 14,D3),IF(D1 = D3,D3 + 1,D3),D3 + 1)= IF(D4 = D5,“”,INDEX(A $ 2:A $ 14,D4 ))= IF(D4 = D5,“”,IF(INDEX(B $ 2:B $ 14,D4)= TRUE,TRUE,“”))
 = IF(INDEX(B $ 2:B $ 14,D4),IF(D2 = D4,D4 + 1,D4),D4 + 1)= IF(D5 = D6,“”,索引(A $ 2:A $ 14,D5 ))= IF(D5 = D6,“”,IF(INDEX(B $ 2:B $ 14,D5)= TRUE,TRUE,“”))
 = IF(INDEX(B $ 2:B $ 14,D5),IF(D3 = D5,D5 + 1,D5),D5 + 1)= IF(D6 = D7,“”,索引(A $ 2:A $ 14,D6 ))= IF(D6 = D7,“”,IF(INDEX(B $ 2:B $ 14,D6)= TRUE,TRUE,“”))
 = IF(INDEX(B $ 2:B $ 14,D6),IF(D4 = D6,D6 + 1,D6),D6 + 1)= IF(D7 = D8,“”,INDEX(A $ 2:A $ 14,D7 ))= IF(D7 = D8,“”,IF(INDEX(B $ 2:B $ 14,D7)= TRUE,TRUE,“”))
 (D8 = D7,D7 + 1,D7),D7 + 1)= IF(D8 = D9,“”,索引(A $ 2:A $ 14,D8) ))= IF(D8 = D9,“”,IF(INDEX(B $ 2:B $ 14,D8)= TRUE,TRUE,“”))
 (D6 = D8,D8 + 1,D8),D8 + 1)= IF(D9 = D10,“”,索引(A $ 2:A $ 14,D9) ))= IF(D9 = D10,“”,IF(INDEX(B $ 2:B $ 14,D9)= TRUE,TRUE,“”))
 = D11 = D11,“”,INDEX(A $ 2:A $ 14,D10)= IF(INDEX(B $ 2:B $ 14,D9),IF(D7 = D9,D9 + 1,D9),D9 + 1) ))= IF(D10 = D11,“”,IF(INDEX(B $ 2:B $ 14,D10)= TRUE,TRUE,“”))
 = IF(INDEX(B $ 2:B $ 14,D10),IF(D8 = D10,D10 + 1,D10),D10 + 1)= IF(D11 = D12,“”,INDEX(A $ 2:A $ 14,D11 ))= IF(D11 = D12,“”,IF(INDEX(B $ 2:B $ 14,D11)= TRUE,TRUE,“”))
 (D9 = D11,D11 + 1,D11),D11 + 1)= IF(D12 = D13,“”,索引(A $ 2:A $ 14,D12) ))= IF(D12 = D13,“”,IF(INDEX(B $ 2:B $ 14,D12)= TRUE,TRUE,“”))
 = D14 =“IF14(D11 = D14,D12 = D12,D12 = 1,D12 = D12 + 1,D12 = ))= IF(D13 = D14,“”,IF(INDEX(B $ 2:B $ 14,D13)= TRUE,TRUE,“”))
 = IF(INDEX(B $ 2:B $ 14,D13),IF(D11 = D13,D13 + 1,D13),D13 + 1)= IF(D14 = D15,“”,INDEX(A $ 2:A $ 14,D14 ))= IF(D14 = D15,“”,IF(INDEX(B $ 2:B $ 14,D14)= TRUE,TRUE,“”))
 = IF(指数(B $ 2:B $ 14,D14),IF(D12 = D14,D14 + 1,D14),D14 + 1)= IF(D15 = D16,“”,指数(A $ 2:A $ 14,D15 ))= IF(D15 = D16,“”,IF(INDEX(B $ 2:B $ 14,D15)= TRUE,TRUE,“”))
 = IF(INDEX(B $ 2:B $ 14,D15),IF(D13 = D15,D15 + 1,D15),D15 + 1)= IF(D16 = D17,“”,INDEX(A $ 2:A $ 14,D16 ))= IF(D16 = D17,“”,IF(INDEX(B $ 2:B $ 14,D16)= TRUE,TRUE,“”))
 = IF(INDEX(B $ 2:B $ 14,D16),IF(D14 = D16,D16 + 1,D16),D16 + 1)= IF(D17 = D18,“”,INDEX(A $ 2:A $ 14,D17 ))= IF(D17 = D18,“”,IF(INDEX(B $ 2:B $ 14,D17)= TRUE,TRUE,“”))
 = IF(INDEX(B $ 2:B $ 14,D17),IF(D15 = D17,D17 + 1,D17),D17 + 1)= IF(D18 = D19,“”,INDEX(A $ 2:A $ 14,D18 ))= IF(D18 = D19,“”,IF(INDEX(B $ 2:B $ 14,D18)= TRUE,TRUE,“”))
 = IF(INDEX(B $ 2:B $ 14,D18),IF(D16 = D18,D18 + 1,D18),D18 + 1)= IF(D19 = D20,“”,INDEX(A $ 2:A14, ))= IF(D19 = D20,“”,IF(INDEX(B $ 2:B $ 14,D19)= TRUE,TRUE,“”))
 IF =(D17 = D19,D19 + 1,D19) ))= IF(D20 = D21,“”,IF(INDEX(B $ 2:B $ 14,D20)= TRUE,TRUE,“”))
 = IF(INDEX(B $ 2:B $ 14,D20),IF(D18 = D20,D20 + 1,D20),D20 + 1)= IF(D21 = D22,“”,INDEX(A $ 2:A $ 14,D21 ))= IF(D21 = D22,“”,IF(INDEX(B $ 2:B $ 14,D21)= TRUE,TRUE,“”))
 = D23 =“23”,“(索引(B $ 2:B $ 14,D21),IF(D19 = D21,D21 + 1,D21),D21 + 1) ))= IF(D22 = D23,“”,IF(INDEX(B $ 2:B $ 14,D22)= TRUE,TRUE,“”))
如果(D20 = D22,D22 + 1,D22) ))= IF(D23 = D24,“”,IF(INDEX(B $ 2:B $ 14,D23)= TRUE,TRUE,“”))
 (D21 = D23,D23 + 1,D23),D23 + 1)= IF(D24 = D25,“”,索引(A $ 2:A $ 14,D24) ))= IF(D24 = D25,“”,IF(INDEX(B $ 2:B $ 14,D24)= TRUE,TRUE,“”))
 = IF(指数(B $ 2:B $ 14,D24),IF(D22 = D24,D24 + 1,D24),D24 + 1)= IF(D25 = D26,“”,指数(A $ 2:A $ 14,D25 ))= IF(D25 = D26,“”,IF(INDEX(B $ 2:B $ 14,D25)= TRUE,TRUE,“”)) 

VBA伪代码(不能编译):

 Public Sub InsertRowBeforeEachTrue(ws As Worksheet, checkColumn As Integer) Dim lastRow As Integer lastRow = ws.UsedRange.Rows.Count Dim i As Integer Dim cell As Range For i = lastRow to 1 Step -1 Set cell = ws.Cells(i, checkColumn) If cell.Value = true Then cell.InsertRow cell.InsertRow End If Next i End Sub