エクセルのVBA(マクロ)に関する質問です。

下記のように同順位があって、1位から10位までの行数が、11行になっています。このように同順位がある場合に、10位の最後行の位置(もしくは、10位までの行数)を取得するのにはどうするのが簡単でしょうか? 10位以降も続くの最後の行というわけにはいきません。
1
2
3
4
5
6
7
8
9
10
10
12
13

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2007/07/23 10:04:22
  • 終了:2007/07/30 10:06:19

回答(4件)

id:kopj No.1

kopj回答回数123ベストアンサー獲得回数62007/07/23 10:16:55

ポイント27pt

Sub Macro1()

'

' Macro1 Macro

'

'A列に1行目から順に順位が入っているものとます。

b = Range("A1")

c = 0

For a = 2 To 65535

If Range("A" & a) = "" Then Exit For

If Range("A" & a) = b Then

If c = 0 Then c = a - 2

If Range("A" & a + 1) <> b Then

MsgBox b & "位までの行数は " & c & "で、" & b & "位の最後の行は " & a & "行です"

End

End If

End If

b = Range("A" & a)

Next a

End Sub

http://q.hatena.ne.jp/answer

id:isogaya

早速ありがとうございます。でも、結構めんどうですね。

2007/07/23 11:10:24
id:takejin No.2

たけじん回答回数1494ベストアンサー獲得回数1942007/07/23 12:34:15

ポイント27pt

数字は、昇順に並んでいるとすれば、

B1に

=IF(A1<>A2,A1,"")

と書いて、下までオートフィル

各順位の最終列だけ、順位の数が表示されます。

http://q.hatena.ne.jp

id:isogaya

その数を取得して使いたいのです。人間の目で見えるならこれでいいのですけど、

2007/07/23 12:46:03
id:takejin No.3

たけじん回答回数1494ベストアンサー獲得回数1942007/07/23 13:16:01

ポイント26pt

http://q.hatena.ne.jp

では、C1→1、C2→2で、あとは下までオートフィル(つまり1から順の番号を表示)

D1に、

=VLOOKUP(C1,B:C,2,0)(これも、下までオートフィル)

としましょう。

C列が求める数字、D列がその最終行になります。

質問者が未読の回答一覧

 回答者回答受取ベストアンサー回答時間
1 ardarim 897 806 145 2007-07-27 21:51:51
  • id:KuroNeko666
    do while~loop で延々と空白行までカウントしてもいいですが、
    もう少し簡単なマクロを。

    '基点となるセルを選択して...
    Range("A1").Select

    '空白行まで以下全部のセルを選択。
    Range(Selection, Selection.End(xlDown)).Select

    '選択したセルの数をカウント
    cellsnum = Selection.Cells.Count

    MsgBox cellsnum

    以上です。
    実質3行(^^)

    他にも、条件があればやり方はいろいろです。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません