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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
VBAでダブルコーテーション入りの数式をセルにセットしたい
Visual Basic(VBA)
-
VBAで変数に関数式の結果をセットする場合
Excel(エクセル)
-
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
-
4
エクセルVBA 配列からセルに「関数式」を一気代入したい
Visual Basic(VBA)
-
5
VBA R1C1形式で変数の入力について
Visual Basic(VBA)
-
6
worksheetFunctionクラスのVlookupプロパティを取得できません エラーへの対応
Visual Basic(VBA)
-
7
ActiveCell.FormulaR1C1の変数
Visual Basic(VBA)
-
8
エクセルVBA 数式の中に、変数で定義したシート名を入力するには
Excel(エクセル)
-
9
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
10
SUM関数の範囲を変数を代入して機能させたいのですが、、、
Visual Basic(VBA)
-
11
vba formulaの中での変数の扱い
Ruby
-
12
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
13
もしセルが#N/A"なら~をする・・・には?"
Excel(エクセル)
-
14
エクセルVBAでオートフィルター最上行を取得するには
Excel(エクセル)
-
15
数式による空白を無視して最終行を取得するマクロ
Excel(エクセル)
-
16
「Columns(A:C")」の列文字を数字にして表記したい"
Excel(エクセル)
-
17
ExcelVBAを使って、値がある場合は作業を繰り返し実行するプログラムを作成したい。
Visual Basic(VBA)
-
18
EXCEL VBA セルに既に入力されている文字に文字を追加する
Excel(エクセル)
-
19
EXCELのVBAでRange(A1:C4")を変数にする方法を教え"
Visual Basic(VBA)
-
20
VBAでファイルを開くときにファイル名でワイルドカードを使用したいです
その他(プログラミング・Web制作)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【お題】絵本のタイトル
- ・【大喜利】世界最古のコンビニについて知ってる事を教えてください【投稿~10/10(木)】
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・ハマっている「お菓子」を教えて!
- ・最近、いつ泣きましたか?
- ・夏が終わったと感じる瞬間って、どんな時?
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで二つの数字の小さい...
-
PowerPointで表の1つの列だけ...
-
エクセル(勝手に太字になる)
-
エクセルで最初のスペースまで...
-
エクセル 時間帯の重複の有無
-
エクセルの表から正の数、負の...
-
エクセル ひらがなの文字を抽出
-
エクセルの関数(日数の平均の...
-
「B列が日曜の場合」C列に/...
-
VBAで文字列を数値に変換したい
-
Excel、市から登録している住所...
-
エクセルで文字が混じった数字...
-
文字列に数字を含むセルを調べたい
-
Excelで半角の文字を含むセルを...
-
Excel 文字列を結合するときに...
-
エクセル 文字数 多い順 並...
-
EXCELで 一桁の数値を二桁に
-
エクセルで一列おきに空白列を...
-
エクセルで、列の空欄に隣の列...
-
お店に入るために行列に並んで...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで二つの数字の小さい...
-
PowerPointで表の1つの列だけ...
-
エクセルで最初のスペースまで...
-
エクセル 文字数 多い順 並...
-
Excelで半角の文字を含むセルを...
-
エクセル(勝手に太字になる)
-
2つのエクセルのデータを同じよ...
-
エクセルで文字が混じった数字...
-
エクセルの項目軸を左寄せにしたい
-
エクセルの並び変えで、空白セ...
-
「B列が日曜の場合」C列に/...
-
Excel、市から登録している住所...
-
VBAで文字列を数値に変換したい
-
エクセルの表から正の数、負の...
-
エクセル 同じ値を探して隣の...
-
エクセル 時間帯の重複の有無
-
エクセルで、列の空欄に隣の列...
-
文字列に数字を含むセルを調べたい
-
EXCELで 一桁の数値を二桁に
-
エクセルで一行毎、一枚づつ自...
おすすめ情報