エクセルで、マクロを作っています。

列の中に、数値がとびとびに入っている場合、数値の入っている最も下のセルはどのように選択すればいいのか教えてください。
Selection.End(xlDown).Select
↑では、空白になっているセルがあると、そこが選択されてしまうので、、、
お願いします。

A 回答 (2件)

A列とか列が分かっていれば、


Sub LastCell1()
  Range("A65536").End(xlUp).Select
End Sub

任意の列(選択している列)なら、
Sub LastCell2()
  Cells(65536, Selection.Column).End(xlUp).Select
End Sub

のようにしても選択できます。
Excel97、Excel2000です。95の場合は65536を最終行にします。

ご参考に。
    • good
    • 0
この回答へのお礼

いつもありがとうございます。
2種類の方法、参考になります。
昨日長い時間かけて悩んでいたことが、一発で解決しました。
ありがとうございます。

お礼日時:2001/11/02 10:44

こんにちは



Sub test()
Cells(Cells.Rows.Count, Selection.Column).End(xlUp).Select
End Sub

でいかがでしょうか?

参考URL:http://www2.odn.ne.jp/excel/waza/function.html#S …
    • good
    • 0
この回答へのお礼

技の方にもでていたのですね^^;;
目は通したのに、解りませんでした。
昨日長い時間かけて悩んでいたことが、一発で解決しました。
ありがとうございます。

お礼日時:2001/11/02 10:43

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

QExcel 「2列連続してマイナスの数値が入っている場所の、その直後のセルの数値がプラスである」確率

数学やExcelが苦手で困っています。
どなたかお力を貸して下さい。

Excel2002以降の環境下での場合です。

1行に100個程度の数値が入っている状況です。
その行の中で、「2列連続してマイナスの数値が入っている場所の、その直後のセルの数値がプラスである」確率を導き出したいのですが、可能でしょうか?

確率自体は、統計関数の何れかを使えば出来そうですが、肝心なところはさっぱり分かりません。
IFを使ってマイナスならば1行下に「1」とか何らかの値を入れて、COUNTIFで手前のセルに値があるか見るという方法も一旦は思いついたのですが、手前のセルとか直後のセルとかを数式でどう表現して良いかも分からず・・・・挫折してしまいそうです。宜しくお願いします。

Aベストアンサー

No3 さんの回答を利用して

=SUMPRODUCT((SIGN($A1:$CT1)=-1)*(SIGN($B1:$CU1)=-1)*(SIGN($C1:$CV1)=1))/SUMPRODUCT((SIGN($A1:$CT1)=-1)*(SIGN($B1:$CU1)=-1))


=SUMPRODUCT(($A1:$CT1<0)*($B1:$CU1<0)*($C1:$CV1>0))/SUMPRODUCT(($A1:$CT1<0)*($B1:$CU1<0))

Aベストアンサー

書式>条件付き書式

セルの値が 次の値より小さい を選択
値は$B1とし、書式を設定。
設定したセルをコピーすればできませんか?

QエクセルVBAで、とびとびのセルの順次選択方法?!

仮にA1:B10という範囲内で、空白のセルだけを一つずつ順番に選択しようと思い、以下のコードを書いてみました。
実行してみると、範囲内がすべて空白の場合にはA1→B1→A2→B2→・・・と、選択してくれます。
しかし、空白と空白以外のセルが混在していると、最初の空白セルから下に、範囲内の空白セル数分だけ、空白であると否とを問わず選択してしまいます。
( ̄□ ̄;)!!
myRngには空白セルだけを指定され、myRng.Cells.Countでもちゃんと空白セル数がカウントされます。
でも、myRng.Cells(i).Select では正しく選択されないのはなぜでしょうか?
Cells(i)を使用せず、ループを
For Each c In myRng
c.Select
Application.Wait Now + TimeValue("0:00:01")
Next c
で回せば選択できるのに・・・・・。

Sub test01()
Dim x As Long, i As Long, myRng As Range
With ActiveSheet
Set myRng = .Range("A1:B10").SpecialCells(xlCellTypeBlanks)
x = myRng.Cells.Count
For i = 1 To x
myRng.Cells(i).Select
Application.Wait Now + TimeValue("0:00:01")
Next i
End With
Set myRng = Nothing
End Sub

ご教示くださいませ。 (o。_。)oペコッ.

仮にA1:B10という範囲内で、空白のセルだけを一つずつ順番に選択しようと思い、以下のコードを書いてみました。
実行してみると、範囲内がすべて空白の場合にはA1→B1→A2→B2→・・・と、選択してくれます。
しかし、空白と空白以外のセルが混在していると、最初の空白セルから下に、範囲内の空白セル数分だけ、空白であると否とを問わず選択してしまいます。
( ̄□ ̄;)!!
myRngには空白セルだけを指定され、myRng.Cells.Countでもちゃんと空白セル数がカウントされます。
でも、myRng.Cells(i).Select で...続きを読む

Aベストアンサー

>結合セルに入力があってもSpecialCells(xlCellTypeBlanks)でひっかかる

いやー、値はある結合セル、までは考えていませなんだ。
まいった、まいった、というところでしょうか。(^^;;;


>If c.Address = c.MergeArea(1).Address And c.MergeArea(1) = "" Then と簡略化してもおなじですよね??

値なのでちゃんとValueプロパティを使ってちょと短くすると

If c.Address = c.MergeArea.Cells(1).Address And c.Value = "" Then
 
 
それから、かねがね当方もそのスキルの高さに敬服しているcj_moverさんの回答にもありますように
SpecialCells(xlCellTypeBlanks)が返す範囲は場合によっては
おい、おい、というようなものになることがありますので、
使うときは、先ず、Addressを表示確認した後に使った方がいいかも知れませんね。


何れにしろ、今回は当方にとっては再確認の旅になりました。
どこまでいってもエラーの出ないmyRng.Cells(i)の振る舞い、など。
とこまでいってもはちょと大袈裟????

ほんとに、ほんとに、ほんとに、これで最後。。。
続きは、cj_moverさんへバトンタッチ。。(^^;;;
ではでは。
 

>結合セルに入力があってもSpecialCells(xlCellTypeBlanks)でひっかかる

いやー、値はある結合セル、までは考えていませなんだ。
まいった、まいった、というところでしょうか。(^^;;;


>If c.Address = c.MergeArea(1).Address And c.MergeArea(1) = "" Then と簡略化してもおなじですよね??

値なのでちゃんとValueプロパティを使ってちょと短くすると

If c.Address = c.MergeArea.Cells(1).Address And c.Value = "" Then
 
 
それから、かねがね当方もそのスキルの高さに敬服しているc...続きを読む

Q入力セルが空白の時 隣りと隣のセル(こちらも入力セル)を空白にできるかどうか?

こういったことできないでしょうか。

 A1  B2  C3
9:00  ~  10:00 と場合に

A1とC3に直接値を入力しています。

A1セルに値がはいらないとき B2のチルダも C3の値も 空白になってくれると
よいなと思うのですが 良い方法はありますでしょうか。

ご存知の方ご教示いただければ助かります。

Aベストアンサー

こんばんは!

>C3のセルのことを B2に入力した式で
>管理できないかと思っているのですが・・・

関数では無理だと思います。
VBAになりますが一例です。

画面左下の操作したいシート見出し上で右クリック → コードの表示 → VBE画面のカーソルが点滅しているところに
↓のコードをコピー&ペースト → Excel画面に戻り(VBE画面を閉じて)
A1・C3セルにデータを入力してみてください。

Private Sub Worksheet_Change(ByVal Target As Range) '//この行から//
If Intersect(Target, Range("A1,C3")) Is Nothing Then Exit Sub
If Target.Count = 1 Then
With Target
If .Row = 1 Then
If .Value <> "" Then
If Range("C3") <> "" Then
Range("B2") = "~"
End If
Else
Range("B2,C3").ClearContents
End If
Else
If .Value <> "" Then
Range("B2") = "~"
Else
Range("B2").ClearContents
End If
End If
End With
End If
End Sub '//この行まで//

※ A1セルがC3セルより大きな値になった場合などの細かいエラー処理はしていません。

こんな感じをお望みなのでしょうか?m(_ _)m

こんばんは!

>C3のセルのことを B2に入力した式で
>管理できないかと思っているのですが・・・

関数では無理だと思います。
VBAになりますが一例です。

画面左下の操作したいシート見出し上で右クリック → コードの表示 → VBE画面のカーソルが点滅しているところに
↓のコードをコピー&ペースト → Excel画面に戻り(VBE画面を閉じて)
A1・C3セルにデータを入力してみてください。

Private Sub Worksheet_Change(ByVal Target As Range) '//この行から//
If Intersect(Target, Range("A1,C3")) ...続きを読む

QExcel VBA 選択されている複数の空白セルのセル番地を、他のブックのセルに表示させる方法

Excel VBAについての質問です。

マクロで、選択している複数の空白セルのセル番地を、他のブックのセルに記入し、空白セルの一覧を作りたいのです。
方法がございましたら、ご教授お願いします。

現在はデータの中から空白セルをすべて選択し、他のブックのシートのセルにセル番地を表示させることはできているのですが、$E$7のような表示になり、空白セルはたくさんあるのに1つしか表示されません。どうすればいいのでしょうか。

Aベストアンサー

図のように選択箇所が重なっていると重複してしまいますが、あとで削除すれば良いのでとりあえず。

Sub Macro2()

Dim 範囲 As Range
Dim 行 As Long
Dim 個目 As Long

Sheets("Sheet2").Columns("A:A").ClearContents
For Each 範囲 In Selection.Areas
For 個目 = 1 To 範囲.Count
If 範囲(個目).Value = "" Then
行 = 行 + 1
Sheets("Sheet2").Cells(行, 1).Value = 範囲(個目).Address(RowAbsolute:=False, ColumnAbsolute:=False)
End If
Next
Next

End Sub


人気Q&Aランキング

おすすめ情報