Excel VBA質問箱 IV

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

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


8365 / 13646 ツリー ←次へ | 前へ→

【33564】行に。 jayan 06/1/15(日) 18:18 質問[未読]
【33565】Re:行の内容を比較して、どちらか片方を削... かみちゃん 06/1/15(日) 18:26 発言[未読]
【33566】Re:行に。 BB 06/1/15(日) 19:37 発言[未読]
【33568】Re:行に。 kobasan 06/1/15(日) 19:46 回答[未読]
【33572】Re:行に。 jayan 06/1/16(月) 1:30 質問[未読]
【33573】Re:行に。 BB 06/1/16(月) 3:01 発言[未読]
【33626】Re:行に。 jayan 06/1/17(火) 5:36 質問[未読]
【33652】Re:行に。 kobasan 06/1/17(火) 16:01 発言[未読]
【33676】Re:行に。 jayan 06/1/18(水) 3:50 質問[未読]
【33748】Re:行に。 kobasan 06/1/19(木) 21:00 回答[未読]

【33564】行に。
質問  jayan  - 06/1/15(日) 18:18 -

引用なし
パスワード
   1と125の行にまったく同じ情報の行があったとします。
同じなのでどちらかがいらないので、125の方を削除しようと思います。それには
どういったマクロを組めばいいのかでしょう?
どなたか詳しい方ご教授くださいませ。
ちなみに
エクセル2003です。

【33565】Re:行の内容を比較して、どちらか片方を...
発言  かみちゃん  - 06/1/15(日) 18:26 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>1と125の行にまったく同じ情報の行があったとします。
>同じなのでどちらかがいらないので、125の方を削除しようと思います。それには
>どういったマクロを組めばいいのかでしょう?

125行目を削除する操作を「マクロの記録」で記録してみてください。
なお、1行目と125行目を1列ずつ比較していくには、どうしたらいいのか?
というご質問なのでしょうか?
また、2行比較したときに、どちらの行を削除するのかもよくわかりません。

【33566】Re:行に。
発言  BB  - 06/1/15(日) 19:37 -

引用なし
パスワード
   ▼jayan さん:
>1と125の行にまったく同じ情報の行があったとします。
>同じなのでどちらかがいらないので、125の方を削除しようと思います。それには
>どういったマクロを組めばいいのかでしょう?
>どなたか詳しい方ご教授くださいませ。
>ちなみに
>エクセル2003です。

rows("125:125").delete shift:=xlup
で125行目を削除することはできるけど、

コードの中で削除をしたいという方でしたら、deleteメソッドを知らないって事はないだろうと思うけど…
単に削除したいだけっていうのなら、わざわざマクロでしなくてもイイと思うけど。該当行で右クリックから削除を選択すればいいと思うけど。

【33568】Re:行に。
回答  kobasan  - 06/1/15(日) 19:46 -

引用なし
パスワード
   ▼jayan さん、皆さん、今晩は。

>1と125の行にまったく同じ情報の行があったとします。
>同じなのでどちらかがいらないので、125の方を削除しようと思います。

ということは、行番号の大きい行を削除すると解釈しました。
これでどうでしょうか。

'A列について重複を調べて、行番号の大きい行を削除する
Sub test()
Dim r As Range, urng As Range, rngA As Range
  For Each r In Range("A1", Range("A65536").End(xlUp))
    If Application.CountIf(Range("A1", r), r.Value) > 1 Then
      If urng Is Nothing Then
        Set urng = r
      Else
        Set urng = Union(urng, r)
      End If
    End If
  Next
  urng.EntireRow.Delete
  Set urng = Nothing
End Sub

【33572】Re:行に。
質問  jayan  - 06/1/16(月) 1:30 -

引用なし
パスワード
   ごめんなさい。説明不足です。
要は複数のセルの中に同じ情報があるのは無駄なので、カブッテイルのを検索して片方を消したいのです。
もしも、3つかぶっていたらひとつに。カブッテイルセルが二組あったら一組のどちらかを削除して、もうひとつの組も片方を削除し、計4つあるセルを2つのセルにしたいのです。
それがシートの中に4組も5組も6組もある場合自分で目で確かめるのが
大変なので自動的に検索して削除してもらいたいのです。
決してデリートのやり方を聞いているのでは
ありません。
kobasan さんの方法で上記のことはできるのでしょうか?

【33573】Re:行に。
発言  BB  - 06/1/16(月) 3:01 -

引用なし
パスワード
   ▼jayan さん:
>ごめんなさい。説明不足です。
>要は複数のセルの中に同じ情報があるのは無駄なので、カブッテイルのを検索して片方を消したいのです。
>もしも、3つかぶっていたらひとつに。カブッテイルセルが二組あったら一組のどちらかを削除して、もうひとつの組も片方を削除し、計4つあるセルを2つのセルにしたいのです。
>それがシートの中に4組も5組も6組もある場合自分で目で確かめるのが
>大変なので自動的に検索して削除してもらいたいのです。
>決してデリートのやり方を聞いているのでは
>ありません。
>kobasan さんの方法で上記のことはできるのでしょうか?

kobasanさんではありませんが。
できるのかどうかは試してみれば分かることですよね。
確実にA列に重複データがあるのであれば問題なく動きます。
重複データの削除について質問をされているので、重複データがないとは考えにくいですが、万が一重複データがない場合はエラーが発生するかもしれませんね。

【33626】Re:行に。
質問  jayan  - 06/1/17(火) 5:36 -

引用なし
パスワード
    失礼しました。出来ますねこれで。
追加質問で申し訳ないのですが、検索する範囲を
シートに広げたりブックにしたり2列にしたり3列に
したりできませんが?
これだとA列のみしかできないようなので。
ところで rngA はどこいったのでしょうか?

【33652】Re:行に。
発言  kobasan  - 06/1/17(火) 16:01 -

引用なし
パスワード
   ▼jayan さん 今日は。

>ところで rngA はどこいったのでしょうか?

rngA は、消し忘れですので削除してください。

>追加質問で申し訳ないのですが、検索する範囲を
>シートに広げたりブックにしたり2列にしたり3列に
>したりできませんが?

プログラムというのは、「〜したり、〜したり」などのように曖昧なことではできません。仕様を決めてやらないといけないわけです。

>シートに広げたりブックにしたり2列にしたり3列に

たとえば、「2列にしたり3列に」ではなく、AB列とかABC列とか決めないと作れないのです。

範囲を変えたいのなら

  For Each r In Range("A1", Range("A65536").End(xlUp))

のRange("A1", Range("A65536").End(xlUp))を変更すればいいです。
後はご自分で仕様を決めて、この部分を変えてください。
全て作ってくれではなく、参考材料が出ているのですから、
それを元に変えながらやってみてください。
そして、分からないところを質問されるとよいと思います。

【33676】Re:行に。
質問  jayan  - 06/1/18(水) 3:50 -

引用なし
パスワード
   普通に
For Each r In Range("A1", Range("A65536").End(xlUp))を
For Each r In Range("A1", Range("Z65536").End(xlUp))に
変えてもエラーがでてしまうのですが・・・
シート内のセル情報をかぶっているものを排除してひとつだけに
するコードがどうしても思いつかないんです。

【33748】Re:行に。
回答  kobasan  - 06/1/19(木) 21:00 -

引用なし
パスワード
   ▼jayan さん 今晩は

>For Each r In Range("A1", Range("A65536").End(xlUp))を
>For Each r In Range("A1", Range("Z65536").End(xlUp))に
>変えてもエラーがでてしまうのですが・・・
>シート内のセル情報をかぶっているものを排除してひとつだけに
>するコードがどうしても思いつかないんです。

よく考えてみると、Z列にデータがないからエラーになっているだけです。

Z列にデータにデータを入れてみてください。

それから、エラー対策として、
  urng.EntireRow.Delete

  If Not urng Is Nothing Then urng.EntireRow.Delete
としてください。

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