No.5ベストアンサー
- 回答日時:
こんにちは
>"=SUM(F2:JY" & lastRow & ")"
>のようにしていますが、列で悩んでいます。
行番号の場合はそのままの数値が利用できるけれど、列の場合はAB等に変換しなくてはならないので困っているということでしょうか?
そういう面倒なことは、エクセルにやってもらうのが賢明かと思います。
例として、列番号である285がわかっていて、これから「JY]を導いて「F2:JY2」のセル範囲の文字列を作成したいという場合を想定します。
colNum = 285
addr = Range("F2").Resize(1, colNum - 5).Address(0, 0)
fmula = "=SUM(" & addr & ")"
MsgBox fmula ' → "=SUM(F2:JY2)"
のような感じで、セル範囲の文字列化が可能です。
Addressプロパティのオプション指定で、絶対参照、相対参照やA1形式、R1C1形式を選択できますので、目的に合わせた形式で得ることができます。
一方、地道に、自前で変換することももちろん可能です。
列番号はAから始まる26進表記になっていますので、285/26、(285 mod 26)を計算して文字A(=Chr(65))からの順序をとれば可能そうです。
例えば、(以下は、少しインチキですが…)
colNum = 285
col = Chr(64 + Int(colNum / 26) ) & Chr(64 + (colNum Mod 26))
fmula = "=SUM(F2:" & col & "2)"
MsgBox fmula ' → "=SUM(F2:JY2)"
となりますが、わざわざこんな面倒なことをやる必要もないですよね。
(上記は雰囲気を示すだけなので、実際には、桁数を判断して文字列を作成しないと、おかしなことが起こり得ます)
上記のような計算をするまでもなく、エクセルにやってもらえば
MsgBox Cells(2, colNum).Address(0, 0)
で「JY2]を簡単に求めることができます。
No.4
- 回答日時:
要するに、左端列固定で、右端列が可変で数式SUM関数を入れたいということでしたら、これでいいのではないでしょうか?
>"=SUM(F2:JY2)"
>↑JYを変数にしたい。
右端は、必ず、RC[-1]になるわけです。 こういう場合は、R1C1型のほうが便利です。
'//標準モジュール
Sub EnterForumla()
'絶対相対参照
Dim lastRow As Long
Dim lastCol As Long
lastRow = Cells(Rows.Count, 6).End(xlUp).Row
lastCol = Cells(2, Columns.Count).End(xlToLeft).Column '列2行目基準とする
Range(Cells(2, lastCol + 1), Cells(lastRow, lastCol + 1)).Formula = "=SUM(RC6:RC[-1])"
End Sub
'---------------------------------
'//両方とも相対参照の場合
Sub EnterForumla2()
'相対参照
Dim lastRow As Long
Dim lastCol As Long
Dim Col As Long
lastRow = Cells(Rows.Count, 6).End(xlUp).Row
lastCol = Cells(2, Columns.Count).End(xlToLeft).Column '列は2行目基準とする
Col = Range("F2", Cells(2, lastCol)).Columns.Count
Range(Cells(2, lastCol + 1), Cells(lastRow, lastCol + 1)).Formula = "=SUM(RC[-" & Col & "]:RC[-1])"
End Sub
No.3
- 回答日時:
No.1
- 回答日時:
こんばんは!
一例です。
Dim myAd As String
Dim myCol As String
と変数を二つ増やし
myAd = Cells(1, lastCol).Address(False, False)
Select Case Len(myAd)
Case 2
myCol = Left(myAd, 1)
Case 3
myCol = Left(myAd, 2)
Case Else
myCol = Left(myAd, 3)
End Select
Range(Cells(2, lastCol + 1), Cells(lastRow, lastCol + 1)) = "=SUM(A2:" & myCol & 2 & ")"
としてみてはどうでしょうか?
※ 一旦、最終列1行目のセル番地(相対参照)をmyAd に格納し
その文字列の長さで判断
2文字の場合は 左1文字
3文字の場合は 左2文字
そうでない場合は 左3文字を変数 myCol(文字列型)にし、
単純にそれをつなぎ合わせているだけです。m(_ _)m
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 最終列の右へSUM関数を作成するため下記コードを実行しましたが、最終列「10月28日」が上書きされて 3 2022/12/05 20:32
- Visual Basic(VBA) フォルダの場所を可変にしたいです(マクロ) 4 2023/05/11 10:00
- Visual Basic(VBA) 複数csvを横に追加していくマクロについて 2 2023/04/25 09:19
- その他(データベース) 「1004:アプリケーション定義またはオブジェクト定義のエラー」への解消方法に関して 1 2023/07/09 11:47
- Excel(エクセル) VBA オリジナル関数で選択セルの合計を作成したい 3 2023/03/19 19:45
- Excel(エクセル) 【関数】選択した文字列にしたがって、文字を選んで表示する 2 2023/07/13 22:44
- Excel(エクセル) VBAについて 3 2022/06/19 18:19
- Excel(エクセル) VBA SUM関数を入力したい 6 2022/08/20 20:10
- Visual Basic(VBA) VBAで列を削除 3 2023/02/01 11:00
- Excel(エクセル) Excel2007での条件付き書式について 6 2023/05/02 10:56
このQ&Aを見た人はこんなQ&Aも見ています
-
10代と話して驚いたこと
先日10代の知り合いと話した際、フロッピーディスクの実物を見たことがない、と言われて驚きました。今後もこういうことが増えてくるのかと思うと不思議な気持ちです。
-
秘密基地、どこに作った?
小さい頃、1度は誰もが作ったであろう秘密基地。 大人の今だからこそ言える、あなたの秘密基地の場所を教えてください!
-
これが怖いの自分だけ?というものありますか?
人によって怖いもの(恐怖症)ありませんか? 怖いものには、怖くなったきっかけやエピソードがあって聞いてみるとそんな感覚もあるのかと新しい発見があって面白いです。
-
ちょっと先の未来クイズ第5問
日本漢字能力検定協会が主催し、12月12日に発表される、2024年の「今年の漢字」に選ばれる漢字一文字は何でしょう?
-
うちのカレーにはこれが入ってる!って食材ありますか?
カレーって同じルーから作っても、家庭によって入っているものや味が微妙に違っていて面白いですよね! 「我が家のカレーにはこれが入ってるよ!」 という食材や調味料はありますか?
-
VBAで変数に関数式の結果をセットする場合
Excel(エクセル)
-
VBAでダブルコーテーション入りの数式をセルにセットしたい
Visual Basic(VBA)
-
worksheetFunctionクラスのVlookupプロパティを取得できません エラーへの対応
Visual Basic(VBA)
-
-
4
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
5
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
6
VBA R1C1形式で変数の入力について
Visual Basic(VBA)
-
7
エクセルVBA 数式の中に、変数で定義したシート名を入力するには
Excel(エクセル)
-
8
vba formulaの中での変数の扱い
Ruby
-
9
SUM関数の範囲を変数を代入して機能させたいのですが、、、
Visual Basic(VBA)
-
10
エクセルVBA 配列からセルに「関数式」を一気代入したい
Visual Basic(VBA)
-
11
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
12
エクセルVBAで5行目からオートフィルタモードに設定したいたい
Excel(エクセル)
-
13
ActiveCell.FormulaR1C1の変数
Visual Basic(VBA)
-
14
エクセルVBAでオートフィルター最上行を取得するには
Excel(エクセル)
-
15
EXCEL VBA セルに既に入力されている文字に文字を追加する
Excel(エクセル)
-
16
数式による空白を無視して最終行を取得するマクロ
Excel(エクセル)
-
17
もしセルが#N/A"なら~をする・・・には?"
Excel(エクセル)
-
18
エクセルVBAで、条件に一致するセルへ移動
Excel(エクセル)
-
19
EXCEL VBA 指定したファイルが存在しない場合メッセージボックスを表示させる
Access(アクセス)
-
20
エクセルのエラーメッセージ「400」って?
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・「みんな教えて! 選手権!!」開催のお知らせ
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~12/6】 西暦2100年、小学生のなりたい職業ランキング
- ・ちょっと先の未来クイズ第5問
- ・これが怖いの自分だけ?というものありますか?
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで二つの数字の小さい...
-
PowerPointで表の1つの列だけ...
-
エクセルで最初のスペースまで...
-
エクセル 文字数 多い順 並...
-
2つのエクセルのデータを同じよ...
-
Excel 文字列を結合するときに...
-
エクセルの表から正の数、負の...
-
エクセルで一列おきに空白列を...
-
エクセルの項目軸を左寄せにしたい
-
エクセル(勝手に太字になる)
-
Excelで半角の文字を含むセルを...
-
エクセルの関数(日数の平均の...
-
文字列に数字を含むセルを調べたい
-
Excel、市から登録している住所...
-
エクセルの並び変えで、空白セ...
-
「B列が日曜の場合」C列に/...
-
EXCELで 一桁の数値を二桁に
-
エクセルで文字が混じった数字...
-
VBAで文字列を数値に変換したい
-
エクセル 同じ値を探して隣の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで二つの数字の小さい...
-
PowerPointで表の1つの列だけ...
-
エクセルで最初のスペースまで...
-
エクセル 文字数 多い順 並...
-
エクセル(勝手に太字になる)
-
エクセルの項目軸を左寄せにしたい
-
2つのエクセルのデータを同じよ...
-
Excelで半角の文字を含むセルを...
-
エクセルで文字が混じった数字...
-
エクセルの表から正の数、負の...
-
文字列に数字を含むセルを調べたい
-
EXCELで 一桁の数値を二桁に
-
Excel、市から登録している住所...
-
「B列が日曜の場合」C列に/...
-
エクセルの並び変えで、空白セ...
-
VBAで文字列を数値に変換したい
-
エクセル 時間帯の重複の有無
-
エクセルで、列の空欄に隣の列...
-
エクセルで一列おきに空白列を...
-
エクセルの関数(日数の平均の...
おすすめ情報