エクセルを仕事で使うために勉強中です。 並び替えをしたいのですが、 どうやったらうまくいくのか悩んでおり、 助けていただけないでしょうか?

画像

Excel | プログラミング37閲覧xmlns="http://www.w3.org/2000/svg">50

ベストアンサー

1

1人がナイス!しています

ThanksImg質問者からのお礼コメント

ありがとうございます。本当にそのとおりで、細かく区切ってやることでやりたかったことが達成できました。

お礼日時:8/5 6:36

その他の回答(3件)

1

マクロで抽出するか(並べ替えではなく抽出ですね) オートフィルターを使うか、というところですか、 配列に抽出してE列に書き出すマクロです。 Sub test() Dim myarr(), i As Long, k As Long, f, D, V D = Range("A1").CurrentRegion.Value ReDim V(1 To UBound(D), 1 To 3) ReDim myarr(0) myarr(0) = D(1, 1) For i = 2 To UBound(D) If D(i, 3) = "あり" Then k = k + 1 ReDim Preserve myarr(k) myarr(k) = D(i, 1) End If Next k = 1 For i = 1 To UBound(D) f = Application.Match(D(i, 1), myarr, 0) If IsNumeric(f) Then V(k, 1) = D(i, 1) V(k, 2) = D(i, 2) V(k, 3) = D(i, 3) k = k + 1 End If Next Range("E1").Resize(UBound(V), 3) = V End Sub オートフィルターの場合はD列で該当データにマークします。 D2セルに =IF(COUNTIFS(A:A,A2,C:C,"あり"),"○","") 下にコピーします。 オートフィルターを適用してD列の○で絞ります(添付図) こちらのほうが簡単ですが、操作は少し手間がかかります。

画像

1人がナイス!しています

ありがとうございます! 超絶初心者ゆえにどうしてそうなるのか理解できておらず、申し訳なく感じています。。教えていただいた知恵を参考書片手に読み解いたうえで、改めてご返信させてください!

1

マクロを作成してみました。 標準モジュールやコマンドボタンに割り当てて実行してみてください。 Sub 並べ替え() Dim i, j, last_row, last_row2 As Long Dim orderID As String Range("E2:G200").ClearContents last_row = Cells(Rows.Count, 1).End(xlUp).Row last_row2 = Cells(Rows.Count, 5).End(xlUp).Row For i = 2 To last_row If Cells(i, 3) = "あり" Then orderID = Cells(i, 1) For j = 2 To last_row If Cells(j, 1) = orderID Then last_row2 = last_row2 + 1 Cells(last_row2, 5) = orderID Cells(last_row2, 6) = Cells(j, 2) Cells(last_row2, 7) = Cells(j, 3) End If Next End If Next End Sub

画像

1人がナイス!しています

ありがとうございます!すごい!こんなはやく!実行してみたらできました! …しかし、マクロ入門者なので意味をひとつひとつ調べている段階です。。いただいた知恵から自分の知識にできるようにしていきます。。

1

並び替えではなく抽出です。 VBAならやりたいことができます。 VBAを勉強されてはどうですか。 無料の講座があります。 http://vba-com.schoolbus.jp/ にやりたい参考があります。

1人がナイス!しています