2016-11-06 105 views
0

我有一個包含40個單元格的表,其中包含值爲「total」,現在我必須在每個包含Total的單元格之前插入新列。請幫助我絕望。這是我到目前爲止..我不知道如何命令它在整個「2:2」中執行它,這意味着在你找到第一個總計之後,直到空單元格爲止。我嘗試過Do Until IsEmpty(Active.Cell),但它對我無能爲力。 HELPP :(VBA Excel如何在cell.value =「」之前插入新列每個cel

Dim INC As Range 
Set INC = Range("2:2").Find("Total") 
If INC Is Nothing Then 
    MsgBox "Total column was not found." 
    Exit Sub 
Else 
    Columns(INC.Column).Offset(, 0).Resize(, 1).Insert 
End If 
+0

需要插入整列對於每一個「總」,或移動(移位)1(此行只)中的內容細胞在右邊? – cyberponk

+0

我只需要在每個總計之前插入新的空列。前兩個解決方案,我剛剛插入新列的第一個總計,他們不進行到另一個總計單元格。 :( –

回答

0

OP的表示的數據結構後編輯

Option Explicit 

Public Sub test() 
    Dim f As Range 
    Dim firstAddress As String 

    With Worksheets("Totals") 
     With .Rows(2).SpecialCells(XlCellType.xlCellTypeConstants, xlTextValues) 
      Set f = .Find(what:="Total", LookIn:=xlValues, lookat:=xlWhole) 
      If Not f Is Nothing Then 
       firstAddress = f.Offset(, 1).Address '<-- offset by one column since f will be shifted one column to the right in subsequent statement 
       Do 
        f.EntireColumn.Insert 
        Set f = .FindNext(f) 
       Loop While f.Address <> firstAddress 
      End If 
     End With 
    End With 
End Sub 
+0

PO想停在第一個空單元格,你的解決方案(這是乾淨,漂亮)將即使在中間遇到一個空單元格,也會繼續運行 –

+0

@ShaiRado。你可能是對的,但是從OP字詞_「在你找到第一個總共繼續這麼做直到空單元格。」之後,我認爲「總數」可能是在第2行的許多單元格中也可以用空格分開,所以我有這個循環直到第2行的最後一個不爲空的單元格。總之不應該是這樣的(我們知道,只要Sofija會給一些反饋)代碼更改很容易找到 – user3598756

+0

此代碼只是在第一次總計之前插入大量新列,我試着用 然後 修改它列(INC2.Column).Offset(,0).Resize (,1)。插入 但它也做了同樣的事情。 :( @ user3598756你是對的,在第2行大約有40個總數。我需要遍歷所有人,並在每個人都有總計細胞之前插入新列:(你能幫我:( –

0

這將在第2行中插入一列單元格的左邊,總價值爲,注意額外的I = I + 1,因爲你需要,因爲你剛剛跳過一個額外的列加入一個:)

Public Sub test() 

    Dim ws As Worksheet 
    Set ws = Worksheets("Sheet1") 

    Dim i As Integer 
    i = 1 

    Do While (ws.Cells(2, i).Value <> "") 

     If (ws.Cells(2, i).Value = "total") Then 

      ws.Cells(2, i).EntireColumn.Insert 
      i = i + 1 

     End If 

     i = i + 1 

    Loop 


End Sub 
+0

此代碼不起作用:(我試圖修改它,但它不會工作。:( –

相關問題