2016-10-27 13 views
0

類似の行をマージする最善の方法(注文番号文字a4; a6; a8と生産数量のみ)と合計(生産数e4; e6; e8) ; 6; 8は、注文の列を除いて同じです(1つの文字が6と8で追加ここで は私が enter image description hereExcel類似の行と合計セルをマージする

行4を探しています出力されます。これは、Excelの表が enter image description here

明確化をどのように見えるかであります)と生産された柱(異なる生産量)。行4,6,8がマージされ、生成された数量が合計されます。行6,8は非表示または削除されます。ここで

+0

あなたは「同様の合併によって何を意味するのか明確にすることができ行 "?おそらく、出力がどのように見えるかのサンプルが役に立ちます。これまでに何を試しましたか? – BruceWayne

+0

@ BruceWayneこんにちは。私は説明を追加しました。 – ArnoldasM

答えて

2

はあなたの問題を解決することができ例です。

Sub test() 

i = 1 
produced = 0 
While Cells(i, 1) <> "" Or Cells(i + 1, 1) <> "" 
    If Cells(i, 1) <> "" Then 

     produced = Cells(i, 5) 

     j = 1 
     'second loop to add up every line with the same order, then suppress the lines 
     While Cells(j, 1) <> "" Or Cells(j + 1, 1) <> "" 
      If Left(Cells(j, 1), 7) = Left(Cells(i, 1), 7) And i <> j Then 
       produced = produced + Cells(j, 5) 
       Cells(j, 5).EntireRow.Select 
       Selection.Delete Shift:=xlUp 
       j = j - 1 
      End If 

      j = j + 1 
     Wend 

    End If 

i = i + 1 
Wend 
+0

@Bitoubiありがとうございました。私のExcelシートのフルバージョンでは、カラムは20です。したがって、Cells(j、5)をCells(j、20)に変更しました。注文番号は123456-7または123456-78(8または9記号の長さ)ですので、Cells(j、1)、7をCells(j、1)、9に変更しましたが、まだ動作させることはできません。たぶんあなたは何が間違っているのか知っていますか? btw、ワークブックは200〜500行あります。 – ArnoldasM

+0

少しの変更を加えていただきありがとうございます。私はそれを有効にすることができました。 :) – ArnoldasM

+1

ニース - 私は非常にあなたが[.Select'の使用を削除することをお勧めします(http://stackoverflow.com/questions/10714251/how-to-avoid-using-select-in-excel-vba-マクロ)。 'Cells(j、5).EntireRow.Delete Shift:= xlUp' – BruceWayne

0

[OK]を、ここに私を助け修正@Bitoubiコードは次のとおりです。

Sub RemoveSplitOrders() 
i = 1 
produced = 0 
While Cells(i, 1) <> "" Or Cells(i + 1, 1) <> "" 
    If Cells(i, 1) <> "" Then 

     produced = Cells(i, 20) 

     j = 1 
     'second loop to add up every line with the same order, then suppress the lines 
     While Cells(j, 1) <> "" Or Cells(j + 1, 1) <> "" 
      If Left(Cells(j, 1), 8) = Left(Cells(i, 1), 8) Or Left(Cells(j, 1), 9) = Left(Cells(i, 1), 9) Then 
       If Cells(j, 2) = Cells(i, 2) And i <> j Then 
        produced = produced + Cells(j, 20) 
        Cells(i, 20).Value = produced 
        Range(Cells(j, 20), Cells(j + 1, 20)).EntireRow.Delete Shift:=xlUp 
        j = j - 1 
       End If 
      End If 

      j = j + 1 
     Wend 

    End If 

i = i + 1 
Wend 
End Sub 
関連する問題