2箇所の商品在庫数の合計を出すのために、
横を同じ品番に揃えたいのですが、
以下の◆並び方前から◆並び替え後に並びかえる方法はありませんか?
宜しくお願いいたします。
◆並び方前
倉庫1 品番 倉庫1在庫 倉庫2品番 倉庫2在庫
pin6 1 pin9 1
pin7 1 pin11 2
pin8 1 pin13 1
pin9 2 pin14 1
pin10 1 pin15 1
pin11 1 pin18 0
pin12 1 pin19 1
pin13 1
pin14 1
pin15 1
pin16 1
pin17 1
pin18 1
pin19 1
◆並び方後
倉庫1 品番 倉庫1在庫 倉庫2品番 倉庫2在庫
pin6 1
pin7 1
pin8 1
pin9 1 pin9 1
pin10 1
pin11 1 pin11 2
pin12 1
pin13 1 pin13 1
pin14 1 pin14 1
pin15 1 pin15 1
pin16 1
pin17 1
pin18 1 pin18 0
pin19 1 pin19 1
No.3ベストアンサー
- 回答日時:
No.1・2です。
お礼欄の表を拝見するとC列に重複品番が出現していますね?
これも考慮する必要があるのですね?
↓のコードに変更してみてください。
Sub Sample2()
Dim i As Long, lastRow As Long, c As Range
Application.ScreenUpdating = False
For i = 2 To Cells(Rows.Count, "C").End(xlUp).Row
Set c = Range("A:A").Find(what:=Cells(i, "C"), LookIn:=xlValues, lookat:=xlWhole)
If Not c Is Nothing Then
Cells(c.Row, "E") = Cells(i, "C")
End If
Next i
lastRow = Cells(Rows.Count, "E").End(xlUp).Row
With Range(Cells(2, "F"), Cells(lastRow, "F"))
.Formula = "=IF(E2="""","""",SUMIF(C:C,E2,D:D))"
.Value = .Value
End With
Range(Cells(2, "E"), Cells(lastRow, "F")).Cut Range("C2")
Range(Cells(2, "C"), Cells(lastRow, "C")).SpecialCells(xlCellTypeConstants).Copy Range("E2")
lastRow = Cells(Rows.Count, "E").End(xlUp).Row
With Range(Cells(2, "F"), Cells(lastRow, "F"))
.Formula = "=SUMIF(C:C,E2,D:D)-SUMIF(A:A,E2,B:B)"
.Value = .Value
End With
Application.ScreenUpdating = True
MsgBox "完了"
End Sub
マクロを実行後は↓の画像のような感じになりますが、
これで良いのでしょうか?m(_ _)m
補足にも記載いたしましたが、コピペがうまくいっておりませんでした。
コピペした際にE列のものがC列に入り込んでしまいました。
実際はC列は重複しておりません。
分かりづらい表記で申し訳ありません。
質問に記載いたしました並び替え前のデータに、
コードを変更したマクロを実行したところ、
いただいた画像の右側のようになりました。
今後はC列が昇順でなくても、消えずに正しく反映されておりました。
至れり尽くせりのマクロです。
品番が1000を超えるため、データを加工するのに時間を要しておりましたが、
これで効率的に業務が進みそうです。
ご親切にご対応くださり大変感謝しております。
誠に有難うございました。
No.4
- 回答日時:
何度もごめんなさい。
前回のコードではマクロを2度以上実行するととんでもない結果になりますので、
↓に変更してください。
少しコードを付け加えました。
Sub Sample3()
Dim i As Long, lastRow As Long, c As Range
Application.ScreenUpdating = False
'▼ここから追加//
lastRow = Cells(Rows.Count, "E").End(xlUp).Row
If lastRow > 1 Then
Range(Cells(2, "E"), Cells(lastRow, "F")).ClearContents
End If
'▲ここまで//
For i = 2 To Cells(Rows.Count, "C").End(xlUp).Row
Set c = Range("A:A").Find(what:=Cells(i, "C"), LookIn:=xlValues, lookat:=xlWhole)
If Not c Is Nothing Then
Cells(c.Row, "E") = Cells(i, "C")
End If
Next i
lastRow = Cells(Rows.Count, "E").End(xlUp).Row
With Range(Cells(2, "F"), Cells(lastRow, "F"))
.Formula = "=IF(E2="""","""",SUMIF(C:C,E2,D:D))"
.Value = .Value
End With
Range(Cells(2, "E"), Cells(lastRow, "F")).Cut Range("C2")
Range(Cells(2, "C"), Cells(lastRow, "C")).SpecialCells(xlCellTypeConstants).Copy Range("E2")
lastRow = Cells(Rows.Count, "E").End(xlUp).Row
With Range(Cells(2, "F"), Cells(lastRow, "F"))
.Formula = "=SUMIF(C:C,E2,D:D)-SUMIF(A:A,E2,B:B)"
.Value = .Value
End With
Application.ScreenUpdating = True
MsgBox "完了"
End Sub
どうも失礼しました。m(_ _)m
No.2
- 回答日時:
No.1です。
前回の投稿で最後の部分が抜けていました。
>※ 一旦マクロを実行すると元に戻せませんので
の次に
>別シートで試してみてください。
です。m(_ _)m
No.1
- 回答日時:
こんにちは!
↓の画像のような配置で左側の表が右側の表のようになれば良いのでしょうか?
VBAになりますが一例です。
元データの「品番」質問通り両列とも昇順に並んでいるという前提です。
画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面のカーソルが点滅しているところに
↓のコードをコピー&ペースト → Excel画面に戻り(VBE画面を閉じて)
マクロを実行してみてください。
(Alt+F8キー → マクロ → マクロ実行です)
Sub Sample1() 'この行から//
Dim i As Long, c As Range
For i = Cells(Rows.Count, "C").End(xlUp).Row To 2 Step -1
Set c = Range("A:A").Find(what:=Cells(i, "C"), LookIn:=xlValues, lookat:=xlWhole)
If Not c Is Nothing Then
c.Offset(, 2).Resize(, 2).Value = Cells(i, "C").Resize(, 2).Value
Cells(i, "C").Resize(, 2).ClearContents
End If
Next i
End Sub 'この行まで//
※ 一旦マクロを実行すると元に戻せませんので
※ 別シート表示でよいのであれば
関数でも可能だと思います。m(_ _)m
早速のご対応有難うございます。
まさに求めていたとおりで大変助かりました。
確かに、両列とも昇順になっていないとデータが消えてしまいますね。
あと1点だけ質問をさせてください。
バージョンアップとして、以下のような並び替えは可能でしょうか?
差分の品番と、差分の在庫数を隙間を開けずに、差分一覧を作り、
システムと倉庫の在庫のズレを把握&修正したいのです。
何卒、宜しくお願いいたします。
品番(システム) 在庫(システム) 品番(倉庫) 在庫(倉庫) 品番(差分) 在庫(差分)
accessory62 1 accessory62 2 accessory62 1
pin6 1 pin9 0
pin7 1 pin11 1
pin8 1 pin13 0
pin9 1 pin9 1 pin14 0
pin10 1 pin15 0
pin11 1 pin11 2 pin18 -1
pin12 1 pin19 0
pin13 1 pin13 1
pin14 1 pin14 1
pin15 1 pin15 1
pin16 1
pin17 1
pin18 1 pin18 0
pin19 1 pin19 1
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Windows 10 windows10 PINコード エラーについて 4 2022/10/04 05:55
- その他(プログラミング・Web制作) micropython コードについて 2 2023/06/14 13:13
- その他(ネットショッピング・通販・ECサイト) おサイフケータイを登録するとき、PInコードを入力まできたのですが、pinコードがわかりません。これ 1 2023/03/12 07:42
- その他(OS) Windows11を使っています 突如、パソコンを起動した時の仕様が、PINを必ず求められるようにな 4 2023/06/13 15:21
- Windows 8 win11の立ち上がりのpinを省略してすぐ対応したい 5 2023/06/29 17:55
- メルカリ 図書カード、ピーターラビット柄 2 2022/07/04 08:22
- その他(動画サービス) TVerでPINコードを求められてログイン出来ない。 AndroidTVであらかじめスマホアプリやP 2 2023/07/17 13:33
- ハッキング・フィッシング詐欺 この症状はマイクロソフト側、PC端末側のどちらに問題が有りますか? 1 2022/09/25 12:04
- ゲーム PINというのは 3 2022/06/10 19:43
- その他(プログラミング・Web制作) micropythonコード 修正 1 2023/06/13 17:22
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ローマ字→カタカナへ変換(エク...
-
Excel VBA のdebug(F8キー) が...
-
EXCELのセルへ、デジタル時計を...
-
Excelを開いた時に表示さ...
-
マクロ 実行ボタンを押さずに...
-
複数ファイルにある特定のシー...
-
【Excel VBA】エラー番号400
-
Excelのワークシート上に検索窓...
-
エラーになってないのにVBA...
-
エクセルで複数のシートをまと...
-
EXCEL2000 VBA マクロ実行中に...
-
TeraTermのマクロについて
-
マクロ ブックをマクロなしでコ...
-
PowerPointでクリックしたオブ...
-
Excelマクロでオプションボタン...
-
エクセルで土日列の非表示方法...
-
ワードで画像を自動で挿入する方法
-
VBAが止まらない
-
エクセル グラフの軸の最小値最...
-
Accessのクエリを実行するショ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ローマ字→カタカナへ変換(エク...
-
複数ファイルにある特定のシー...
-
マクロ 実行ボタンを押さずに...
-
EXCELのセルへ、デジタル時計を...
-
Excelを開いた時に表示さ...
-
エラーになってないのにVBA...
-
Excel VBA のdebug(F8キー) が...
-
ワードからエクセルへ貼り付け...
-
エクセルのマクロ機能で前のシ...
-
Excelのワークシート上に検索窓...
-
モジュール内のマクロを全て実...
-
エクセル グラフの軸の最小値最...
-
EXCEL 複数のシートの同一の位...
-
エクセルで複数のシートをまと...
-
【Excel VBA】エラー番号400
-
Excelマクロでオプションボタン...
-
Wordの画面を左右にスクロール...
-
マクロ ブックをマクロなしでコ...
-
Wordで「原稿用紙○枚」を換算す...
-
AccessのテーブルデータをExcel...
おすすめ情報
tom04様
No.1へのお礼の補足です。
コピペしたデータがペーストした時に正しく反映されていない可能性があります。
添付画像のようにしたいと思っております。
何卒、宜しくお願いいたします。