No.4
- 回答日時:
例えば、添付図のようにA列に品名、B列に金額の表があるとします。
マクロで、B列の金額の合計を求めて、その結果をD2のセルに格納する
とします。
その場合の、マクロは以下のようになります。
マクロ①
----------------------------------------------
Sub sample()
Dim gokei As Long
gokei = 0
For i = 2 To 8
gokei = gokei + Cells(i, 2).Value
Next
Cells(2, 4).Value = gokei
End Sub
--------------------------------------------
この場合、最終行は8行目なので
For i= 2 to 8 とすればよいわけですが、
この表は日々、追加されるので、行が増えると、その都度マクロを変える必要があります。ところが、その都度マクロを変えるのは大変なので、変えなくても済む方法があるなら、そのようにしたいと考えるはずです。
そこで、行が追加されても、自動的に、最終行を取得する方法があれば、それを利用するのが、最適な解決方法になるわけです。
もし、何らかの方法で、lastRowという変数に最終行の値が設定されるなら
for i = 2 to LastRow
とすれば、最終行が、日々更新されても、マクロを変える必要がなくなります。
そこで、最終行を取得する方法ですが、
Dim lastRow As long
lastRow= Cells(Rows.Count,1).End(xlUp).Row
とすると最終行がlastRowに設定されます。(このケースではLastRowに8が設定されます)
この2行を前のマクロに組み込むと、以下のようになります。
マクロ②
----------------------------------------------
Sub sample()
Dim gokei As Long
Dim lastRow As Long
lastRow = Cells(Rows.Count, 1).End(xlUp).Row
gokei = 0
For i = 2 To lastRow
gokei = gokei + Cells(i, 2).Value
Next
Cells(2, 4).Value = gokei
End Sub
----------------------------------------------
こうすると、最終行が変わっても、マクロを修正することなく、合計金額が求められます。
lastRow= Cells(Rows.Count,1).End(xlUp).Row
は、最終行を求める定番の処理なので、ぜひ覚えておいてください。
これは、1列目に存在する空白でないセルの最終行を求めています。
もし、2列目に存在する空白でないセルの最終行を求めるなら
lastRow= Cells(Rows.Count,2).End(xlUp).Row
のようにします。
「使いたい処理」とは、この場合、マクロ①でこのlastRowを使いたいので、
マクロ①が使いたい処理となります。
No.3
- 回答日時:
写真に写っているのは、プログラムじゃなくて日本語の文章っぽいですけど、間違えてませんか?右から1行目と2行目は読めますが、3行目以降は字が薄くて小さくて不鮮明で読めないし。
プログラムじゃなくて、日本語の文章の意味を知りたいのなら、意味を知りたい文章を質問文に記入しましょう。
No.1
- 回答日時:
データの最後の行がわかったときに、それを利用して何らかの処理を行えるでしょう。
最終行がわからなければデータのないセルをプログラムが処理するとヤバイいときに使えそう。if(データセルの最終行=true)then do○○。というような大雑把なイメージかな? 知らんけど。w
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語 バッファについて。 20 2023/10/13 20:43
- C言語・C++・C# コマンドプロンプトについて。 5 2023/10/04 21:20
- Visual Basic(VBA) vba Sleep関数について教えてください 1 2023/01/18 10:18
- C言語・C++・C# ストリーム 意味について。 4 2023/10/30 18:17
- C言語・C++・C# 画像の画素値を変えるC言語のプログラムで指定された画像の中に白い三角形を右上に表示させるにはどのよう 3 2022/10/30 01:16
- その他(プログラミング・Web制作) 3Dモデルにおける法線の計算について(Python,OpenGL) 1 2023/04/25 23:46
- Visual Basic(VBA) 基本情報技術者の擬似言語プログラム このプログラムの答えは(ウ)です。でも配列に格納されてる順番が良 2 2023/09/03 09:48
- Excel(エクセル) ¥マークを含むパスの処理について(マクロ、または関数) 2 2022/12/25 02:11
- C言語・C++・C# C言語プログラム変更 2 2022/12/21 15:03
- JavaScript Typescript が必要な理由 1 2023/01/07 11:45
このQ&Aを見た人はこんなQ&Aも見ています
-
見学に行くとしたら【天国】と【地獄】どっち?
みなさんは、一度だけ見学に行けるとしたら【天国】と【地獄】どちらに行きたいですか? 理由も聞きたいです。
-
一番最初にネットにつないだのはいつ?
ネットユーザーもいろんな世代が生まれていますが、始めて接続したときのワクワクは同じはず! 人生で一番最初にネットに接続したときの思い出を教えて下さい。
-
【大喜利】【投稿~12/17】 ありそうだけど絶対に無いことわざ
【お題】 ・ありそうだけど、絶対に無いことわざを教えてください。
-
食べられるかと思ったけど…ダメでした
「この煮物、だいぶ放置しちゃったけど大丈夫かな…」 「食べ物じゃないけど、なんか食べたらすごく美味しそうな気がする」
-
14歳の自分に衝撃の事実を告げてください
タイムマシンで14歳の自分のところに現れた未来のあなた。 衝撃的な事実を告げて自分に驚かせるとしたら何を告げますか?
-
excelVBAについて。
Excel(エクセル)
-
excelVBAについて。
Excel(エクセル)
-
excelVBAについて。
Excel(エクセル)
-
-
4
エクセルマクロについて教えて下さい。
Excel(エクセル)
-
5
excelVBAについて。
Excel(エクセル)
-
6
【再投稿】レイアウトが異なる別のワークブックからデータを転記する方法を教えてください
Excel(エクセル)
-
7
エクセル初心者です 用語とか良く分からないので簡単に説明していただけると幸いです 表を作っているので
Excel(エクセル)
-
8
8:40までの出勤は全て8:30にする関数を教えて下さい!!
Excel(エクセル)
-
9
【マクロ】メッセージボックスにて、キャンセルをクリックしたら、マクロ終了。エクセルへ戻すには
Excel(エクセル)
-
10
excelVBAについて。
Excel(エクセル)
-
11
excelVBAについて。
Excel(エクセル)
-
12
【マクロ】ファイル名の変更について
Excel(エクセル)
-
13
年間の医療費のデータがあり、月々の集計をする計算式を教えていただけませんか
Excel(エクセル)
-
14
excelVBAについて。
Excel(エクセル)
-
15
excelVBAについて。
Excel(エクセル)
-
16
excelVBAについて。
Excel(エクセル)
-
17
excelVBAについて。
Excel(エクセル)
-
18
エクセル初心者です 用語等まだ良く分からないので簡単に説明していただけると幸いです タブの挿入、図形
Excel(エクセル)
-
19
【マクロ】複数の日付データをYYYY/MM/DDに読替えて、別ブックへ転記したい
Excel(エクセル)
-
20
excelですが一つのマスに入ってる文字を2つのマスに変更できますか
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・「みんな教えて! 選手権!!」開催のお知らせ
- ・漫画をレンタルでお得に読める!
- ・「黒歴史」教えて下さい
- ・2024年においていきたいもの
- ・我が家のお雑煮スタイル、教えて下さい
- ・店員も客も斜め上を行くデパートの福袋
- ・食べられるかと思ったけど…ダメでした
- ・【大喜利】【投稿~12/28】こんなおせち料理は嫌だ
- ・前回の年越しの瞬間、何してた?
- ・【お題】マッチョ習字
- ・モテ期を経験した方いらっしゃいますか?
- ・一番最初にネットにつないだのはいつ?
- ・好きな人を振り向かせるためにしたこと
- ・【選手権お題その2】この漫画の2コマ目を考えてください
- ・2024年に成し遂げたこと
- ・3分あったら何をしますか?
- ・何歳が一番楽しかった?
- ・治せない「クセ」を教えてください
- ・【大喜利】【投稿~12/17】 ありそうだけど絶対に無いことわざ
- ・【選手権お題その1】これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
- ・集合写真、どこに映る?
- ・自分の通っていた小学校のあるある
- ・フォントについて教えてください!
- ・これが怖いの自分だけ?というものありますか?
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・10代と話して驚いたこと
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【マクロ】複数行並んだデータ...
-
エクセルの計算式を教えてくだ...
-
Excelファイルを開くと私だけVA...
-
Excel スクロールバーの長さが...
-
【マクロ】関数の入力にてエラ...
-
納期順に勝手に並べ替えられる...
-
エクセルで作れる簡単なスケジ...
-
【マクロ】AブックからBブック...
-
AA、AA(1)、BB、BB(1)、CC、CC(...
-
スプレッドシート(Excelでも良...
-
Excelで並べ替えをするとおかし...
-
【関数】データベースから2つ...
-
excelVBAについて。
-
関数を教えて下さい。
-
履歴書をパソコンで描きたいの...
-
【Excel】日付に連動してプルダ...
-
フォルダの中にファイルがある...
-
エクセルシートの作成(関数)...
-
識別子の表示について
-
エクセルで作った表が印刷する...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelの警告について
-
excelVBAについて。
-
excelVBAについて。
-
UNIQUE関数、配列数式を使わず...
-
エクセルのデータ整理の方法
-
11ケタの数字を打つと、エク...
-
エクセルの関数ついて
-
エクセル初心者です 用語とか良...
-
エクセル2021 範囲指定印刷をす...
-
【マクロ】メッセージボックス...
-
Excelで合計を求めたいです
-
IEを使わずHTMLを取得する
-
1.5ヶ月分の費用按分 エクセル関数
-
エクセル初心者です 用語等まだ...
-
excelVBAについて。
-
エクセルの不調について
-
Excelで、毎月の月曜と金曜の合...
-
vbe でのソースコード参照(msgb...
-
エクセル数式に問題があります
-
アクセス2016 エクセル2016 重...
おすすめ情報
すみません。手書きで書きます。最後から4行は、
この変数を使う場合、サンプルの2,3行目をコピーして、使いたい処理よりも上の行へペーストしてください。そのあと、たとえば、「Set rng=Range(Cells(a,b),Cells(lastRow,c))」のようにセル範囲の終点セルの行として指定したり、繰り返し処理で「For i = 1 To lastRow」とループの終点に指定したりすると便利です。ちなみに、プログラム内容は、以下の通りです。
sub sample088( )
Dim lastRow As long
lastRow= Cells(Rows.Count,1).End(xlUp).Row
MsgBox lastRow
End sub
教えていただけると幸いです。
マクロ②でなぜ、疑問①lastRow = Cells(Rows.Count, 1).End(xlUp).Rowを組み込んでいるのでしょうか?後、疑問②Set rng=Range(Cells(a,b),Cells(lastRow,c))を使うとどうなるのでしょうか?教えて頂けると幸いです。
すみません。マクロ②でなぜ、疑問①lastRow = Cells(Rows.Count, 1).End(xlUp).Rowを組み込んでいるのでしょうか?後、疑問②Set rng=Range(Cells(a,b),Cells(lastRow,c))も使うとどうなるのでしょうか?教えて頂けると幸いです。
こちらが正しい疑問です。すみません。
迅速な回答ありがとうございます!所で、マクロ②でなぜ、lastRow= Cells(Rows.Count,2).End(xlUp).Rowじゃなくて、lastRow= Cells(Rows.Count,1).End(xlUp).Rowを使っているのでしょうか?教えて頂けると幸いです。
なぜ、疑問①品名を基準にして考えたのでしょうか?教えて頂けると幸いです。後、疑問②マクロ③で使いたい処理はあるのでしょうか?教えて頂けると幸いです。
すみません。この前、マクロ①が使いたい処理になる。と言っていたのですが、マクロ③には使いたい処理はないのかと思って。教えて頂けると幸いです。
つまり、①合計の所で、D2セルに入っている関数は、=SUM(A1:B8)という感じでしょうか?②さっきマクロ①が使いたい処理だと言っていましたが、マクロ③ではどこが使いたい処理なのでしょうか?もしかするとlastRowを入れる前が、使いたい処理で、lastRowが入っている場合が、マクロ③という感じでしょうか?教えて頂けると幸いです。だとすると、マクロ③でlastRowが入る前のマクロも出来るのでしょうか?
すみません。マクロ②のlastRow = Cells(Rows.Count, 1).End(xlUp).Row
gokei = 0
For i = 2 To lastRow
の所で、A列の最終行を求めるのは分かるのですが、なぜ、それで、B列の最終行まで求められるのでしょうか?教えて頂けると幸いです。