プロが教えるわが家の防犯対策術!

こんにちは
左の分部はモトのパッキングリストで、右の書式にまとめたいのです。
品名とトータルの個数がずれている。
どうやって迅速に処理できるのか?
ご教示お願い致します。

「Excel 書式をまとめる」の質問画像

質問者からの補足コメント

  • ご回答ありがとうございます。
    実現できました。

    No.2の回答に寄せられた補足コメントです。 補足日時:2020/01/11 09:59
  • ご回答ありがとうございます。
    元列始番号や元行始番号などわかりませんので、
    全体の画像を添付しました。
    お手数ですが、埋めて頂くことが可能でしょうか?

    「Excel 書式をまとめる」の補足画像2
    No.1の回答に寄せられた補足コメントです。 補足日時:2020/01/11 10:16

A 回答 (4件)

こんにちは



VBAによる回答は出ているので、関数でまとめる方法をご参考までに…

ご提示のサンプルではセル位置が不明なので、元データとなっている最初のデータ(1-2となっているところ)をB3セルと仮定しました。
データはB:F列の3行目から下に並んでいるものとします。
また、左端の「PackingNo」(?)の値に重複はないものと仮定しています。

右側の「まとめ後のデータ」の「1-2」の値のセルをJ3セルとするなら。
J3セルに
 =IFERROR(INDEX(B:B,AGGREGATE(15,6,ROW(B:B)/(B:B<>""),ROW(A1))),"")
K3セルに
 =IF(J3="","",VLOOKUP(J3,B:C,2))
L3セルに
=IF(J3="","",IF(LEFT(INDEX(D:D,MATCH(J3,B:B,0)),1)="@",SUBSTITUTE(INDEX(D:D,MATCH(J3,B:B,0)+1),"BAG",""),SUBSTITUTE(INDEX(D:D,MATCH(J3,B:B,0)),"BAG","")))

を入力して、それぞれ下方にフィルコピーすることで実現可能と思います。
この回答への補足あり
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
実現できました。

お礼日時:2020/01/11 09:59

「元列始番号」は赤枠の列番号にします。

多分「2」です。
「元行始番号」は赤枠の行番号にします。多分「1」です。
「先列始番号」は青枠の列番号にします。多分「10」です。
「先行始番号」は青枠の行番号にします。多分「2」です。
「Excel 書式をまとめる」の回答画像4
    • good
    • 0

列番号は左から何列目かです。

A列は1、B列は2…のようになります。プログラムで使う場合はこちらの方が使いやすいのです。
Excelのバージョンによって操作は違いますが「オプション」「数式」「数式の処理」で「R1C1参照形式を使用する」にチェックを入れると列記号が列番号に変わります。プログラムを雲たい時はチェックを入れると判りやすくなります。
「Excel 書式をまとめる」の回答画像3
    • good
    • 0

マクロ(VBA)を使う事になると思います。

以下のような物はいかがでしょうか?

Sub Sample()

Const 元列始番号 = 2 'B列 ← 環境に合わせて下さい
Const 元行始番号 = 1 '1行目 ← 環境に合わせて下さい
Const 先列始番号 = 9 'I列 ← 環境に合わせて下さい
Const 先行始番号 = 2 '2行目 ← 環境に合わせて下さい
Dim 元行 As Long
Dim 先行 As Long

 Columns(先列始番号).NumberFormatLocal = "@"
 先行 = 先行始番号
 For 元行 = 元行始番号 To Cells(Rows.Count, 元列始番号).End(xlUp).Row
  If Cells(元行, 元列始番号).Value <> "" Then
   Cells(先行, 先列始番号).Value = Cells(元行, 元列始番号).Value
   Cells(先行, 先列始番号 + 1).Value = Cells(元行, 元列始番号 + 1).Value
   If Left(Cells(元行, 元列始番号 + 2).Value, 1) = "@" Then
    Cells(先行, 先列始番号 + 2).Value = Cells(元行 + 1, 元列始番号 + 2).Value
   Else
    Cells(先行, 先列始番号 + 2).Value = Cells(元行, 元列始番号 + 2).Value
   End If
   先行 = 先行 + 1
  End If
 Next
 Columns(先列始番号 + 2).Replace What:="BAG", Replacement:=""

End Sub
この回答への補足あり
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
元列始番号や元行始番号などわかりませんので、
全体の画像を添付しました。
お手数ですが、埋めて頂くことが可能でしょうか?

お礼日時:2020/01/11 11:20

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!