
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も見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
もしセルが#N/A"なら~をする・・・には?"
Excel(エクセル)
-
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
VBAで変数に関数式の結果をセットする場合
Excel(エクセル)
-
-
4
vba formulaの中での変数の扱い
Ruby
-
5
エクセル マクロ オートフィルの終点の指定について
Excel(エクセル)
-
6
VBAでダブルコーテーション入りの数式をセルにセットしたい
Visual Basic(VBA)
-
7
ActiveCell.FormulaR1C1の変数
Visual Basic(VBA)
-
8
Application.ScreenUpdating = Falseが効きません
Visual Basic(VBA)
-
9
エクセルVBA 数式の中に、変数で定義したシート名を入力するには
Excel(エクセル)
-
10
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
11
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
12
VBA R1C1形式で変数の入力について
Visual Basic(VBA)
-
13
【Excel VBA】指定行以降をクリアするには?
Visual Basic(VBA)
-
14
EXCEL VBA 指定したファイルが存在しない場合メッセージボックスを表示させる
Access(アクセス)
-
15
vlookup関数の引数を変数で指定することはできますか?
Excel(エクセル)
-
16
【EXCEL】【VBA】空欄は飛ばして処理する方法を教えて下さい。
Excel(エクセル)
-
17
特定の複数のシートに同じ処理をさせたい
Excel(エクセル)
-
18
cellsで特定の離れた範囲を選択する方法は?
Visual Basic(VBA)
-
19
「Columns(A:C")」の列文字を数字にして表記したい"
Excel(エクセル)
-
20
エクセルVBA 配列からセルに「関数式」を一気代入したい
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
人気Q&Aランキング
-
4
2つのエクセルのデータを同じよ...
-
5
「B列が日曜の場合」C列に/...
-
6
エクセルの並び変えで、空白セ...
-
7
50人を数回、グループ分けする...
-
8
エクセルで最初のスペースまで...
-
9
Word2016でExcelデータを差込し...
-
10
エクセル 文字数 多い順 並...
-
11
エクセル(勝手に太字になる)
-
12
エクセルの項目軸を左寄せにしたい
-
13
エクセルで、列の空欄に隣の列...
-
14
エクセル 同じ値を探して隣の...
-
15
EXCELで 一桁の数値を二桁に
-
16
エクセルで文字が混じった数字...
-
17
VBA 連続行データを5行ずつ隣の...
-
18
B列の値がA列にあるかを調べる関数
-
19
エクセルの表示画面(シート)...
-
20
Excelで半角の文字を含むセルを...
おすすめ情報
公式facebook
公式twitter