Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


32437 / 76734 ←次へ | 前へ→

【49533】Re:特定の行のみ削除する方法がわかりません。
回答  Hirofumi  - 07/6/8(金) 18:28 -

引用なし
パスワード
   >つまり、本の並びを一時的に別の場所にコピーし、
>そのコピーした物で重複削除の処理をしていると言う解釈でよろしいのでしょうか?

「本」?と言うのが解りませんが?
多分、イメージが違うと思います?

例として、処理するListが、A、B、C列の3列として、
重複を比較する列がA列だった場合

  A列  B列  C列
1  2   B   い
2  1   D   あ
3  2   B   い
4  4   A   え
5  4   A   え
6  4   A   え
7  5   G   お
8  3   H   う

1、D列に、先頭行を1としてデータ行分の連番を出力します

  A列  B列  C列  D列
1  2   B   い  1
2  1   D   あ  2
3  2   B   い  3
4  4   A   え  4
5  4   A   え  5
6  4   A   え  6
7  5   G   お  7
8  3   H   う  8

2、A列をKeyとして、A〜D列を昇順整列を行います

  A列  B列  C列  D列
1  1   D   あ   2
2  2   B   い   1
3  2   B   い   3
4  3   H   う   8
5  4   A   え   4
6  4   A   え   5
7  4   A   え   6
8  5   G   お   7

3、データ行数分の2元配列を確保します
 この時、配列の最初の次元が行、次の次元を列とします
 ただ、このコードでは、D列に出力する連番を作成した配列を再利用しています

4、A列(実際には処理速度を上げる為、直接セルを比較するのでは無く、
 事前に配列にA列データを取得しています)を上下で比較して、重複している場合
 lngNumbの配列に1を立て、重複していない場合0を立てます

5、lngNumbの配列をE列に出力します

  A列  B列  C列  D列  E列
1  1   D   あ   2   0
2  2   B   い   1   0
3  2   B   い   3   1
4  3   H   う   8   0
5  4   A   え   4   0
6  4   A   え   5   1
7  4   A   え   6   1
8  5   G   お   7   0

6、A〜E列までを、E列をKey1、D列をKey2として昇順整列を掛け、
 削除行をListの後ろに集め、かつListの順を元に戻します

  A列  B列  C列  D列  E列
1  2   B   い   1   0
2  1   D   あ   2   0
3  4   A   え   4   0
4  5   G   お   7   0
5  3   H   う   8   0
6  2   B   い   3   1
7  4   A   え   5   1
8  4   A   え   6   1

7、Listの後ろに集めた削除行を一括して削除します

  A列  B列  C列  D列  E列
1  2   B   い   1   0
2  1   D   あ   2   0
3  4   A   え   4   0
4  5   G   お   7   0
5  3   H   う   8   0
6
7
8

8、D、E列を削除します

  A列  B列  C列  D列  E列
1  2   B   い
2  1   D   あ
3  4   A   え
4  5   G   お
5  3   H   う
6
7
8

先ず、テスト用のデータを作成して、

  '画面更新の停止
  Application.ScreenUpdating = False

をコメントアウトして、ステップ実行して見れば解ると思いますが?

10 hits

【49390】特定の行のみ削除する方法がわかりません。 とっきぃ 07/6/3(日) 19:25 質問
【49391】Re:特定の行のみ削除する方法 かみちゃん 07/6/3(日) 19:31 発言
【49392】Re:特定の行のみ削除する方法 とっきぃ 07/6/3(日) 19:42 発言
【49395】Re:特定の行のみ削除する方法 かみちゃん 07/6/3(日) 21:41 発言
【49414】Re:特定の行のみ削除する方法 とっきぃ 07/6/4(月) 18:49 質問
【49470】Re:特定の行のみ削除する方法 Hirofumi 07/6/5(火) 23:02 回答
【49501】Re:特定の行のみ削除する方法 とっきぃ 07/6/7(木) 12:18 お礼
【49393】Re:特定の行のみ削除する方法がわかりませ... Hirofumi 07/6/3(日) 19:54 回答
【49394】Re:特定の行のみ削除する方法がわかりませ... とっきぃ 07/6/3(日) 20:02 発言
【49517】Re:特定の行のみ削除する方法がわかりませ... とっきぃ 07/6/8(金) 14:43 質問
【49521】Re:特定の行のみ削除する方法がわかりませ... Hirofumi 07/6/8(金) 16:17 回答
【49522】Re:特定の行のみ削除する方法がわかりませ... とっきぃ 07/6/8(金) 16:34 質問
【49533】Re:特定の行のみ削除する方法がわかりませ... Hirofumi 07/6/8(金) 18:28 回答
【49534】Re:特定の行のみ削除する方法がわかりませ... とっきぃ 07/6/8(金) 19:40 お礼

32437 / 76734 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free