- ベストアンサー
Excel2000のマクロで
Excel2000のマクロで B1 AAA B2 B3 BBB B4 B5 CCC B6 B1~最後の行までで データがいくつ入ってるか知りたいのですが分かりません。 このときデータは3つ だから3を取りたいです。 それから A1に1 A3に2 A5に3 B列にデータが入ってる行に1から順に 数字を入れるにはどうしたらいいですか? 教えてください。よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
個数は WorksheetFunction.CountA(Columns("B")) 列Aに連番を振るのは Dim r As Long, c As Long For r = 1 To Cells(Rows.Count, "B").End(xlUp).Row If Cells(r, "B").Value <> "" Then c = c + 1 Cells(r, "A").Value = c End If Next r
その他の回答 (2)
- DOUGLAS_
- ベストアンサー率74% (397/534)
#全く別の観点から。。。 下記の操作を Excel 2003 の [ツール(T)] - [マクロ(M)] - [新しいマクロの記録(R)...] で記録を採った コード を整理してみました。 1)B列を選択し、コピー([Ctrl] + [C])します。 2)A列に貼付け([Ctrl] + [V])ます。 3)[Ctrl] + [G](または [編集(E)] - [ジャンプ(G)...])で [ジャンプ] ダイアログ を開き、[セル選択(S)...] で [選択オプション] ダイアログ を開きます。 [選択] - [定数(O)] の ラジオボタン を オン にして、[OK] します。 4)アクティブセル に「1」を入力します。 5)[編集(E)] - [フィル(I)] - [連続データの作成(S)...] で [連続データ] ダイアログ を開き、[範囲] - [列(C)] の ラジオボタン を オン にして、[OK] します。 この操作では、(5) で [範囲] - [列(C)] の ラジオボタン を オン にしていることがミソですが、(3) で選択する ラジオボタン を実状に応じて変更するなどして、お試しください。 なお、実際に記録された コード を [Offset プロパティ] を使うなどして、普遍化しておりますので、その辺りもご参考に(かなり結果オーライな コード になりましたが)。。。 Sub Macro1() Dim hoge As Range Set hoge = Columns("B:B").SpecialCells(xlCellTypeConstants, 23) MsgBox hoge.Count Columns(1).ClearContents hoge.Offset(, -1) = "1" hoge.Offset(, -1).DataSeries Rowcol:=xlColumns, Step:=1 End Sub
- imogasi
- ベストアンサー率27% (4737/17069)
これはEXCEL関数でもできる問題です。 EXCEL関数はCOUNT(=数字セル数)COUNTA(空白でないセル数)などがある。 ーーー そちらの方ぐらい勉強してもらうとして、 一方VBAでEXCEL関数がApplication.WorksheetFunction.XXX(XXXは同じ関数名)として使えないか 一考してみるのも有意義です。 Sub test01() MsgBox Application.WorksheetFunction.CountA(Range("b1:B10")) End Sub 1セルづつ、セルの値(空白か)の判別を繰り返すコードに比べ短く、エラーが少なく、何をやって居るかEXCEL使いの人には明瞭です。 上記などは基礎のことですからもっと勉強してください。 >数字を入れるにはどうしたらいいですか これは、1セルづつ、セルの値(空白か)の判別を繰り返すコードを書いて、セットする数を毎回+1すると良い。