アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

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

  • tom04様

    No.1へのお礼の補足です。
    コピペしたデータがペーストした時に正しく反映されていない可能性があります。
    添付画像のようにしたいと思っております。
    何卒、宜しくお願いいたします。

    「エクセル 4列2列×2セットの同じ並び方」の補足画像1
      補足日時:2016/09/18 18:42

A 回答 (4件)

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
「エクセル 4列2列×2セットの同じ並び方」の回答画像3
    • good
    • 0
この回答へのお礼

補足にも記載いたしましたが、コピペがうまくいっておりませんでした。
コピペした際にE列のものがC列に入り込んでしまいました。
実際はC列は重複しておりません。
分かりづらい表記で申し訳ありません。
質問に記載いたしました並び替え前のデータに、
コードを変更したマクロを実行したところ、
いただいた画像の右側のようになりました。
今後はC列が昇順でなくても、消えずに正しく反映されておりました。
至れり尽くせりのマクロです。
品番が1000を超えるため、データを加工するのに時間を要しておりましたが、
これで効率的に業務が進みそうです。
ご親切にご対応くださり大変感謝しております。
誠に有難うございました。

お礼日時:2016/09/18 22:19

何度もごめんなさい。



前回のコードではマクロを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
    • good
    • 0

No.1です。



前回の投稿で最後の部分が抜けていました。
>※ 一旦マクロを実行すると元に戻せませんので
の次に
>別シートで試してみてください。

です。m(_ _)m
    • good
    • 0

こんにちは!



↓の画像のような配置で左側の表が右側の表のようになれば良いのでしょうか?
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
「エクセル 4列2列×2セットの同じ並び方」の回答画像1
    • good
    • 0
この回答へのお礼

早速のご対応有難うございます。
まさに求めていたとおりで大変助かりました。

確かに、両列とも昇順になっていないとデータが消えてしまいますね。

あと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

お礼日時:2016/09/18 18:35

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