- ベストアンサー
データの一括選択
1行目と2行目にタイトルが入っていてウインド固定しています。 3行目から横方向A~DZにデータが入り、行は千以上になる予定です。 これを並べ替えする為にデータを全て選択したいのですが、3行目から 最終行までを選択する簡単な方法は有りませんか?? フォームのボタンにマクロを登録したいと思いますが、書式を知らないので 教えて頂けませんか m(__)m
- みんなの回答 (13)
- 専門家の回答
質問者が選んだベストアンサー
オペレーションで行うなら、 1. [Ctrl]+[G] - [セルの選択]で最後のセルを選択 2. 数式バーの横に最後のセルのアドレスが表示されているので、 そこを書き換えてEnter 例えば、最後のセル選択で DZ1500 と表示されていたら、 A3:DZ1500 と書き換えます。 ただし、この操作で得られる「最後のセル」というのは、書式のみ 設定され値のないセルも「使用済み」セルとしてカウントされて います。VBA で言えば、UsedRange や SpecialCells で得られる セルです。 # これで問題なければ OK なんですが、実用途ではデータのある # セル範囲のみほしい場合がほとんどです。 途中に空セルがある場合で、値が入力されているセルの最終行番号 を取得するには、End(xlUp) がよく使われますが、こちらは、 「確実に最終行を取れる列」が事前にわかっていないと使えません。 で、結局歯抜けデータの場合、Find を使うのが一番手っ取り早い。 こんな感じ。 Sub Sample() Dim r As Long On Error Resume Next r = Cells.Find(What:="*", _ SearchDirection:=xlPrevious, _ SearchOrder:=xlByRows).Row Range("A3:DZ" & CStr(r)).Select End Sub
その他の回答 (12)
- ka_na_de
- ベストアンサー率56% (162/286)
ka_na_deです。 KenKen_SPさん ご指摘ありがとうございます。 その通りですね。 なるほど~ さまざまな、状況を想定して考えないといけないですね。 重ね重ね参考になります。 こちらは経験少ない素人ですから、ご遠慮なく これからもご指摘ご指導よろしくお願い致します。
お礼
何度もご丁寧にお答え頂けありがとうございました。 私の目指している物は近い様でまだ遠そうです。 これからも質問いっぱいさせて頂くと思いますので どうぞ宜しくお願いしますね m(__)m
- ka_na_de
- ベストアンサー率56% (162/286)
ka_na_deです。 KenKen_SPさんの回答を見て知りました。 UsedRangeは値がなくて枠線などの書式のみ設定されている セルも含めてカウントするんですね。 なるほど、そういう場合はUsedRangeでは希望の結果になりませんね。 勉強になりました~。
- KenKen_SP
- ベストアンサー率62% (785/1258)
nomark さん、ka_na_de さん、こんばんは。 差し出がましいのですが... UsedRange を使う場合は、次のような風にした方が良いと思い ますが、いかがでしょうか? 例えば、1~5行目に空行を挿入すると UsedRange.Rows.Count では、正しく選択できなくなります。 もちろん、データが1行目から始まる前提ならば、無駄レス なのでその際は、スルーして下さい。 Dim lngY As Long On Error Resume Next With ActiveSheet.UsedRange lngY = .Cells(.Cells.Count).Row End With Range(Cells(3, "A"), Cells(lngY, "DZ")).Select
- ka_na_de
- ベストアンサー率56% (162/286)
#1です。 列はDZまでと決まってましたね。 修正します。 Sub test() Dim lngYCnt As Long lngYCnt = ActiveSheet.UsedRange.Rows.Count Range(Cells(3, "A"), Cells(lngYCnt, "DZ")).Select End Sub
- ka_na_de
- ベストアンサー率56% (162/286)
#1です。 マクロの質問だったのですね。 これでどうですか? Sub test() Dim lngYCnt As Long Dim intXCnt As Integer lngYCnt = ActiveSheet.UsedRange.Rows.Count intXCnt = ActiveSheet.UsedRange.Columns.Count Range(Cells(3, "A"), Cells(lngYCnt, intXCnt)).Select End Sub
- ka_na_de
- ベストアンサー率56% (162/286)
たびたび #1のka_na_deです。 もし、空白が少数であるなら、 [Ctrl]+[Shift]+[→],[→],[→],[→] で最終列までジャンプできます。
- ka_na_de
- ベストアンサー率56% (162/286)
#1です。 もし、最終行が不定の場合、 1)A3セルを選択 2)[Ctrl]+[Shift]+[↓]キーを押す。 3)「名前ボックス」に「DZ????」と入力し、 [Shift]を押しながら[Enter] ???は2)で表示された最終行の数を入れてください。
- ka_na_de
- ベストアンサー率56% (162/286)
#1です。 補足説明を今見ました。 #4の方法でいけると思います。
- ka_na_de
- ベストアンサー率56% (162/286)
#1です。 おまけで回答します。 もしデータがDZ列以降にもあって、数万行もあって、 その中から、A3~DZ3000 の部分だけ選択する場合 1)A3を選択 2)左上に「A3」と表示された「名前ボックス」に「DZ3」と入力し [Shift]を押しながら[Enter] 3)次に「名前ボックス」に「DZ3000」と入力し、 [Shift]を押しながら[Enter]
- koko88okok
- ベストアンサー率58% (3839/6543)
マクロではありませんが、ショートカットです。 3行目を選択して、「Ctrl」+「Shift」+「↓」キーを同時に押しますと、最終行までが選択されます。 「選択に関するショートカット一覧」 http://dreamy.boy.jp/short1.htm
お礼
ありがとうございました。 その動作をマクロに記録してボタンで一括選択する様にしました。 色んなショートカットあるんですね^^; 勉強になりました。ありがとうございました m(__)m
- 1
- 2
お礼
丁寧な解説ありがとうございました。 今日は他の事で手一杯に成ってしまったので まだ試せていませんが、今度の休日にまた試してみたいと思います。 コピーしてデスクトップに保存しました^^ ありがとうございました m(__)m