-1

B2:B14987列 B に請求書番号 ( )、列 CI にアイテム ID、列 DI に販売額、列 EI に請求書割引額 を含む Excel ファイルがあります。

請求書番号の列に基づいて請求書割引値のセルを結合するマクロが必要です。1 つの請求書に異なるアイテム ID があるため、請求書番号が繰り返されます。

例:B1:B3は同じ請求書番号です。 はにE1ある請求書の共通の割引値です。空白のセルです。だから、 にあった値とマージしたいのです。B1:B3E2:E3E1:E3E1

4

1 に答える 1

2

次のコードは、あなたが求めていると思うことを実行します。いつものように、私が誤解している場合は、質問を明確にしてください。

スプレッドシートでモジュールを作成し、次のコードを貼り付けます。

Private Sub mergeAndAlign(r As Range)
    With r
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
        .MergeCells = True
    End With
End Sub

Sub mergeAll()
' step through column E
' merge all cells that have the same invoice number
' they are already sorted - and the value we need is in the first cell
' of the block to be merged
Dim r As Range
Dim prevItem As Range
Dim nextItem As Range
Dim lastRow, thisRow, rCount As Integer

lastRow = [B2].End(xlDown).Row

Set prevItem = [E2]
Set nextItem = prevItem.End(xlDown)

While nextItem.Row <= lastRow
  Set r = Range(prevItem, nextItem.Offset(-1, 0))
  mergeAndAlign r
  Set prevItem = nextItem
  Set nextItem = nextItem.End(xlDown)
Wend

' do the last item:
Set nextItem = Cells(lastRow, 5) ' last valid cell in column E
Set r = Range(prevItem, nextItem)
mergeAndAlign r

End Sub

対象のシートからコードを実行します。Alt-F8 をクリックして「マクロ」ダイアログを表示します。リストに項目「MergeAll」が表示されます (おそらく唯一の項目です)。これからあなたを連れて行きます:

元のスプレッドシート

これに:

マージ後のスプレッドシート

于 2013-05-02T13:53:15.243 に答える