No.4ベストアンサー
- 回答日時:
Rangeオブジェクトの「Find」メソッドが空白セルや指定の文字列などをのセルの行番号(Row)を取得するのに便利です。
下記の例では指定範囲を定義(Set)し、その定義範囲で最初の空白セルの行番号を取得できるので、その1行上(-1)が空白でない最後のセルになります。そこで、その最後のセルまでループ処理(For~Next)します。
Option Explicit
Public Sub GetData()
Dim rCol As Range, lngRow As Long, i As Long
Set rCol = Range("A1:A100")
lngRow = rCol.Find("").Row
For i = 1 To lngRow - 1
Range("B" & i) = rCol(i)
Next i
End Sub
この回答への補足
貴重な回答ありがとうございました。試行錯誤している部分を具体的にお知らせしますのでご教示下さい。(1)シート1にb19:j54の表があります。(2)c19が空でなければその左のb列のデータ(b19)をb16(これは固定です)へコピーします。(3)シート2のC5:M69を印刷します。(4)c20が空でなければその左のb列のデータ(b20)をb16(これは固定です)へコピーします。(5)この作業をc54まで行います。(最大36回)(6)c列が空のところで作業を終了します。シート1のc列を点検して空でなければ同じ行のb列の値をb16へ入れ、シート2を印刷する。c列が空のところで作業を終了する。このようなマクロを組みたいのですが、教えてください。
補足日時:2008/11/17 12:44No.5
- 回答日時:
diashunです。
補足を拝見しましたが、これではコーディングソースを作ってくれという内容に受け取れます。OKWaveは質問者に、回答者がその経験に基づくヒントやアイデア、参考となるURLなどを提供し、質問者のスキルアップの手助けをする場であり、仰るようなご要求はソース作成の下請け的なことを回答者に求めている状態と思います。ご要求の内容は経験豊富な回答者(アンサリスト)には困難でもなんでもありませんが、前述の趣旨に則り、今回のご要求には応じられませんので、悪しからず。
ご指摘最もです。実は始め質問した折り、他の回答者の中で、「もっと具体的に尋ねなさい」と言うご指摘があり、知りたかったのはその中のごく一部でしたが縷々細かく書いてしまいました。自分は昔からロータスでマクロを組む習慣があり、エクセルに乗り換えてからも、エクセルマクロの基礎的なところが分かっておらず、先回のような質問をしました。メールをいただき反省し、昨日からエクセルのヘルプなどを確認したところ分かりました。今後ともよろしくお願いします。ありがとうございました。
No.3
- 回答日時:
>b1に順にコピーしたい
とは,b1から順にB100までコピーしたいのこと。
B1ひとつの表現になっていて不適当でしょう。
ーー
一般には
Sub test02()
d = Range("A101").End(xlUp).Row
Range("A1:A2" & d).Copy Range("B1")
End Sub
が質問の回答かな。
ーーーー
全般にどういう場面で使おうとしているかもわからないが
マクロまでを考えるなら
A列の当たる列の選択
A100に当たる行の選択
B1にあたるスタートセルの選択
を考えないと、意味無い(勉強にもならない)と思うよ。
>セルの内容が空になったところで、その作業を終えたい。
だからA列のデータをB列など指定セルを先頭セルに、コピーしたいと
質問しないと勉強にならない。
B1:b100までに後半データがなければ、
Sub test01()
Dim a As Variant
a = Range("A1:A100")
Range("B1:B100") = a
End Sub
でも不都合が無いのでは(値だけ移るが)
No.2
- 回答日時:
Do Loop 或いは For Nextの使い方でしょうか
A1~A100の途中に空白はないとして
Sub TEST1()
i = 1
Do While Cells(i, 1).Value <> ""
Cells(i, 2).Value = Cells(i, 1).Value
i = i + 1
Loop
End Sub
途中に空白がある場合でデータの入っている最後の行まで
Sub TEST2()
For i = 1 To Range("A65536").End(xlUp).Row
Cells(i, 2).Value = Cells(i, 1).Value
Next
End Sub
とか参考にしてみてください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) vbaエクセルマクロ RemoveDuplicatesについて RemoveDuplicatesを使 3 2023/02/28 01:13
- Visual Basic(VBA) vbaエクセルマクロ RemoveDuplicatesについて RemoveDuplicatesを使 1 2023/02/27 22:21
- Excel(エクセル) エクセルのマクロについて教えてください。 3 2023/02/07 14:47
- Visual Basic(VBA) Excelのマクロについて教えてください。 1 2023/03/12 12:16
- Visual Basic(VBA) VBAマクロでシートコピーした新シートにコピー元シートとの計算式の入れ方を教えて下さい。 5 2022/11/20 09:48
- Visual Basic(VBA) 顧客ごとに違う点検案内を作成するマクロ 4 2022/09/16 05:34
- Visual Basic(VBA) Excel VBA 最終行を取得しVlookup関数をコピーする方法をコーディングで教えてください。 3 2023/05/11 13:14
- Excel(エクセル) Excelで数式をそのままコピーしたい どうすればいいですか? 4 2022/09/16 02:16
- Excel(エクセル) マクロだと数式が表示される 2 2022/09/10 14:48
- Excel(エクセル) エクセルのマクロでコピー後の貼り付け先を毎回指定したところにしたい 5 2022/08/12 10:47
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
IF関数で空欄("")の時、Null...
-
エクセルでCSVを編集するとき、...
-
Excel > ピボットテーブル「(空...
-
数式による空白を無視して最終...
-
【Excel】 csvの作成時、空白セ...
-
エクセルにて負の時間を0:00と...
-
「データ要素を線で結ぶ」がチ...
-
excel2010 空白セルにのみ貼り...
-
ピボットテーブルで空白セルの...
-
形式貼り付けの「空白を無視す...
-
エクセルで、「複数のセルの中...
-
Excel:関数が入っているセルに...
-
空白セル内の数式を残したまま...
-
SUMIFS関数で「計算式による空...
-
Excelで、入力文字の後に自動で...
-
vlookupの結果が0になるセルと...
-
エクセルで上の行の値を自動的...
-
vlookup にて、返す値が、空白...
-
エクセル マクロ 最終列まで...
-
エクセル 連番が途切れていると...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
IF関数で空欄("")の時、Null...
-
数式による空白を無視して最終...
-
excel2010 空白セルにのみ貼り...
-
エクセルでCSVを編集するとき、...
-
「データ要素を線で結ぶ」がチ...
-
Excelで、入力文字の後に自動で...
-
ピボットテーブルで空白セルの...
-
エクセル 連番が途切れていると...
-
関数TRANSPOSEで空白セルを0に...
-
空白セル内の数式を残したまま...
-
Excel > ピボットテーブル「(空...
-
エクセルで、「複数のセルの中...
-
SUMIFS関数で「計算式による空...
-
空白を0とみなす関数
-
【Excel】 csvの作成時、空白セ...
-
エクセルで上の行の値を自動的...
-
《Excel2000》SUMPRODUCT関数で...
-
一列の中の金額を他のセルに
-
形式貼り付けの「空白を無視す...
-
エクセルで空白文字の前後を入...
おすすめ情報