2015-06-03 152 views
3

我的項目工作存在類似於下面描述的問題。Excel VBA合併/合併同名列

我的數據集是這樣 enter image description here

我想是這樣的(最後一欄) enter image description here

我有像「Is_paid」,「作業」同名的很多列。 我要的是創建一個新列「TOT」,它結合了所有這些「Is_Paid」,並在一個特殊的方式,如「招聘」,

  1. 將所有「Is_Paid」一欄爲「Is_Paid_total」
  2. 將所有 「工作」 列到Job_total

  3. 和代碼格式(不正確)

    Private Sub CommandButton1_Click() 
    
    Dim MyWorksheetLastColumn As Byte 
    
    MyWorksheetLastColumn = Worksheets(1).Cells(1, Columns.Count).End(xlToLeft).Column 
    Worksheets(1).Cells(1, MyWorksheetLastColumn + 1).Value = "Tot_Employment" 
    
    
    
    Dim rngTemp As Range 
    
    Set rngTemp=Cells.Find("*",SearchOrder:=xlByRows,SearchDirection:=xlPrevious) 
    
    With rngTemp 
    
    
    For Each cel In Range(Cells(1, 1), rngTemp) 
    
    '****************MERGING STEPS********************** 
    
    If cel.column(Is_Paid_total)="NonPaid" then 
    
    Tot=Is_Paid 
    
    else Tot=Job_total 
    

結束如果 未來切爾 尾隨着 結束小組

步驟3將在for循環

我不知道如何合併/結合起來,得到Is_Paid_Total和Job_Total。 另外我知道我寫的if語句是錯誤的。請幫我解決這個問題。

+0

爲什麼不循環遍歷行尋找「nonpaid」並將其放在列中,否則查找第二個非空白,並將其放置在列中? – Raystafarian

+0

請問爲什麼需要使用VBA來完成這項工作? – chancea

+0

我嘗試了所有的排列和組合。我想念一些東西。你能否以編碼形式寫作? –

回答

2

我想象有人可以給你一個更好的答案,但我能想到的最好的辦法,以符合標準在最後的評論是設置數據了像這樣的表:enter image description here

公式對於「總計」欄是:

=IF(OR([@[is_paid]]="NonPaid",[@[is_paid2]]="NonPaid",[@[is_paid3]]="NonPaid"),"NonPaid",[@Job]&[@Job2]&[@Job3])

+0

我可以使用vba獲得這個嗎? –

+0

不確定,希望別人能夠評論或回答這個問題。 – Clif

2

我有一個不同的公式,但這個想法幾乎是相同的:

你的最後一列應該有這個公式

IF(ISERROR(MATCH("NonPaid",$A2:$G2,0)),OFFSET(INDIRECT(ADDRESS(ROW($D2),MATCH("Paid",$A2:$G2,0))),0,1),"NonPaid") 

您需要調整以滿足您的欄目,在我爲例我的數據最後一欄爲G,這樣的公式是對列H.

我想你也可以通過使用它的VBA範圍()。formula =「= ......」 然後使用所有範圍的縮進