こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

エクセルのショートカットORマクロ

お世話になります。
XP/エクセル2003使用です。
早速ですが、質問させていただきます。

エクセルのショートカットで、
同じ値の最後のセルまでセル範囲を選択するショートカットを探しています。

--------

同じ値の1個目のデータが複数行に渡ってあります。
そして、1個目のデータに続いて、1個目とは異なる値の2個目のデータが複数行に渡ってあります。
3個目以下同じ繰り返しです。

例えば、A列の

1~800行目  あああ
801~1100行目  いいい
1101行目~1205行目 ううう
1206行目~1310行目 えええ
1310行目~1499行目 おおお


 同じ値が入力された連続する行の数に規則性はありません。
 また、異なる値の個数も作業の都度変わります。(”あああ”などの値の個数のことです)


エクセルのショートカットで、
入力された最後のセルを探すのは、
「Ctrl」+「Shift」+「↓キー」で可能ですが、
同じように、同じ値が入力された最後のセルまで
何かのショートカットでセル範囲の選択をできますでしょうか?

または、マクロで記述するとすると
どのようなコードになりますでしょうか?

作業としましては、
A1セルを選択した状態でA800セルまでセル範囲を選択し、ある作業をします。
次に、A801セルを選択した状態でA1100セルまでセル範囲を選択し、上記と同じ作業をします。
これの繰り返しです。

行数が多いので、セル範囲を選択するときに
スクロールで上手く上下させることができず面倒になっています。

よろしくお願いします。

投稿日時 - 2014-10-27 16:29:06

QNo.8804831

困ってます

質問者が選んだベストアンサー

>同じ値の最後のセルまでセル範囲を選択する

ご相談の状況説明が間違ってる可能性が高いと思いますが、それでもご説明が正しいと仮定して


sub macro1()
’先頭が選ばれている前提で選ぶ。ただし同じモノはヒトカタマリしかない
 range(activecell, activecell.entirecolumn.find(what:=activecell.value,after:=activecell, lookin:=xlvalues, lookat:=xlwhole, searchdirection:=xlprevious)).select
end sub

またはもう一工夫して
sub macro2()
’どこを選んでいても同じものの先頭から最後までを選ぶ
 dim s as range
 dim e as range
 activecell.select
 set s = activecell.entirecolumn.find(what:=activecell.value, after:=cells(rows.count, activecell.column), lookin:=xlvalues, lookat:=xlwhole)
 set e = activecell.entirecolumn.find(what:=activecell.value, after:=cells(1, activecell.column), lookin:=xlvalues, lookat:=xlwhole, searchdirection:=xlprevious)
 range(s, e).select
end sub

といった具合で。

投稿日時 - 2014-10-27 21:30:31

お礼

keithinさま、早速のご回答ありがとうございます。

2番目の方のコードがピッタリでした。
僕にとってポイントは、lookin:=xlvaluesでした。

どうもありがとうございました。
今後ともよろしくお願いします。

投稿日時 - 2014-10-28 10:18:58

ANo.4

このQ&Aは役に立ちましたか?

4人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.3

こんばんは!

選択したセルからと同じデータの最終行まで選択すれば良い!というコトでしょうか?
A列限定だとして・・・

Sub Sample1()
Dim startRow As Long, myRow As Long
startRow = Selection.Row
myRow = startRow + 1
Do While Cells(myRow, "A") = Cells(startRow, "A")
myRow = myRow + 1
Loop
Range(Cells(startRow, "A"), Cells(myRow - 1, "A")).Select
End Sub

こんな感じではどうでしょうか?m(_ _)m

投稿日時 - 2014-10-27 18:49:47

お礼

tom04さま、早速のご回答ありがとうございます。

ループで回して検索する方法ですね。
こちらも、望みどおりでした。

ありがとうございました。
今後ともよろしくお願いします。

投稿日時 - 2014-10-28 10:20:55

ANo.2

即席なのであんまりスマートじゃないですが、こんな感じで。

Sub Macro1()
r = Selection.Row
c = Selection.Column
stval = Cells(r, c).Value
ntval = stval

Do While stval = ntval
ntval = Cells(r + 1, c).Value
r = r + 1
Loop

Range(Cells(Selection.Row, Selection.Column), Cells(r - 1, c)).Select

End Sub

文字の最初のセルを選択した状態で実行です。
空白セルでの実行回避は入れてないのでご注意を。

投稿日時 - 2014-10-27 17:17:22

お礼

qualheartさま 早速のご回答ありがとうごじあます。

なるほど・・・Doと変数を使う方法ですね。
こちらも要望にぴったりでした。

どうもありがとうございました。
今後ともよろしくおねがいします。

投稿日時 - 2014-10-28 10:25:19

ANo.1

オートフィルタは使っていますか?

「あああ」行だけ「いいい」行だけを
抽出する機能ですが

抽出後に
「Ctrl」+「Shift」+「↓キー」
で最後まで行ってだーっと上に戻ればokではないでしょうか

投稿日時 - 2014-10-27 17:15:18

お礼

satorukuneさま 早速のご回答ありがとうございました。

そうなんです^^だーーーーっと上に戻るんですけど、
そのときに、ミスしたり画面がちらついたりしてイライラなんです(笑

どうもありがとうございました。
今後ともよろしくお願いします。

投稿日時 - 2014-10-28 10:27:05

あなたにオススメの質問