人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

エクセル(VBA)に関して質問です。
並び替えの処理を行い、データの埋め込み作業を自動で行うプログラムを作成したいと考えております。
時間がある方でプログラムを組める方おりましたらよろしくお願いいたします。
プログラムを行うデータですが、以下のような状況です。

http://oskuni7.sakura.ne.jp/hatena/question3/hatena3_1.htm

ピンクとオレンジの行の全てを並び替えをします。
並び替えの条件ですが、第一条件を 商品番号、第二条件を 1か0か?にし、昇順で共に並び替えをします。

並び替えをすると下記のような状態になります。

http://oskuni7.sakura.ne.jp/hatena/question3/hatena3_2.htm

商品番号が共にある場合、0(オレンジ)の列Aから列AEに入っているデータを、1(ピンク)の列Aから列AEへ移動させます。
移動させた後、0(オレンジ)のデータを行ごと削除します。

処理後、下記のようになります。

http://oskuni7.sakura.ne.jp/hatena/question3/hatena3_3.htm

最後に今回埋め込まれたデータ行の列AHに”再出品”という判定を出力して終わりです。

上記のようなプログラムを組める方おりましたらよろしくお願いいたします。



●質問者: aiomock
●カテゴリ:コンピュータ インターネット
✍キーワード:VBA エクセル オレンジ データ ピンク
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● Mook
●300ポイント ベストアンサー

EXCEL のソートの仕様により、並べ替え順は提示されたサンプルと異なりますが、

内容に関しては同等の結果になると思います。


不明な点がありましたら、コメントください。

Option Explicit
Sub Aiomac()
 Const DATA_START_LINE = 2

 Dim i As Long
'--- Step 1 ソート
 Columns("A:AG").Sort _
 Key1:=Range("AG1"), Order1:=xlAscending, _
 Key2:=Range("AF1"), Order2:=xlAscending, _
 Header:=True, Orientation:=xlTopToBottom, SortMethod:=xlPinYin
 
 Dim lastRow As Long
 lastRow = Range("AF" & Rows.Count).End(xlUp).Row
 
'--- Step 2 データ転記
 Dim pCode As String
 Dim bOverWrite As Boolean
 Dim srcRow As Long
 For i = DATA_START_LINE To lastRow
 If Cells(i, "AG").Value = pCode Then
 If bOverWrite = True And Cells(i, "AF") = 1 Then
 Range("A" & srcRow).Resize(1, 31).Copy _
 Destination:=Range("A" & i).Resize(1, 31)
 Cells(i, "AH") = "再出品"
 End If
 Else
 If Cells(i, "AF").Value = 0 Then
 bOverWrite = True
 pCode = Cells(i, "AG").Value
 srcRow = i
 Else
 bOverWrite = False
 End If
 End If
 Next
 
'--- Step 3 行削除
 For i = lastRow To DATA_START_LINE Step -1
 If Cells(i, "AF") = 0 Then
 Rows(i).Delete
 End If
 Next
End Sub
◎質問者からの返答

ご回答ありがとうございます。

プログラムを実行したのですが 400というメッセージエラーが発生してしまいました。

プログラムを始める行も 商品番号が入っている

Const DATA_START_LINE = 4

に変更してみたのですが引き続きエラーが発生してしまいます。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ