- ベストアンサー
エクセル 変数でのSUM
m_hagizoの回答
行番号を取るところまでできているのでしたら、"=SUM(Cy1:Cy2)"という文字列を作成し、直接セルにぶち込めればいいんですよね?(y1は小計開始行、y2は小計終了行) それなら、 Cells(LIN_C, 3).VALUE="=SUM(C" & LIN_A & ":C" & LIN_B & ")" でできませんか?
関連するQ&A
- VBA SUM関数に変数を入れた計算式の書き方
図のような表があります。 この表で、B1~B2、B6~B7は1行から4行の間で変化します。 ただし、B1~B2の行数とB6~B7の行数は同じです。 A10のセルに=SUM(B6,B7,(B6-C6*B2/100),(B7-C7*B3/100))という計算式を入れたいのですが 上記のように行数が変化するので B1=cells(gyou,2) B2=cells(gyou1,2) B6=cells(gyou+5,2) B7=cells(gyou1+5,2) c6=cells(gyou+5,3) c7=cells(gyou1+5,3) としています。ここでgyou1は1から4の間で変化します。 ほんとうは cells(gyou+9,1).Formula=SUM(cells(gyou+5,2):(cells(gyou1+6,2)-cells(gyou1+6)*cells(gyou1,2)/100)) とできると良いのですが、エラーになります。 SUM(cells(gyou+5,2):cells(gyou1+5,2))はOKですが、 SUM((cells(gyou+5,3)-cells(gyou+5,2)*cells(gyou,2)/100)):(cells(gyou1+5,2)-cells(gyou1+5,3) _ *cells(gyou1,2)/100))が、NGです。 これをどのようにコードを書くと良いのか教えて下さい。
- 締切済み
- その他MS Office製品
- 【エクセルマクロ】小計下への空白行挿入
マクロ初心者です。 日付ごとのデータがありまして、 webで検索した次のマクロを使って、 ' 1行目から処理開始(見出しなし) GYO = 1 Do While Cells(GYO, 1).Value <> "" ' 小計グループの先頭行→GYO1 GYO1 = GYO GYO = GYO + 1 ' 次の行から同じグループでない行を見つける Do While Cells(GYO, 1).Value = Cells(GYO1, 1).Value GYO = GYO + 1 Loop ' 同じグループの最終行→GYO2 GYO2 = GYO - 1 ' 小計行を挿入 Rows(GYO).Insert Cells(GYO, 2).Value = Cells(GYO1, 1).Value & "月の小計" Cells(GYO, 3).Value = " ********** " Cells(GYO, 6).FormulaR1C1 = "=SUBTOTAL(9,R" & GYO1 & "C:R" & GYO2 & "C)" Cells(GYO, 7).FormulaR1C1 = "=SUBTOTAL(9,R" & GYO1 & "C:R" & GYO2 & "C)" Cells(GYO, 8).FormulaR1C1 = "=SUBTOTAL(9,R" & GYO1 & "C:R" & GYO2 & "C)" GYO = GYO + 1 Loop ' 総合計 Cells(GYO, 2).Value = "年度合計" Cells(GYO, 3).Value = " ********** " Cells(GYO, 6).FormulaR1C1 = "=SUBTOTAL(9,R1C:R" & GYO2 & "C)" Cells(GYO, 7).FormulaR1C1 = "=SUBTOTAL(9,R1C:R" & GYO2 & "C)" Cells(GYO, 8).FormulaR1C1 = "=SUBTOTAL(9,R1C:R" & GYO2 & "C)" 次のように、小計と年度計を挿入できるのですが、 見にくいので、小計の下に1行挿入したいのです。 4/1 ○○○ ¥□□ | 4/30 ○○○ ¥□□ 4月の小計 **** ¥□□ 5/1 ○○○ ¥□□ | 5/31 ○○○ ¥□□ 5月の小計 **** ¥□□ 6/1 | (途中省略) 4/30 4月の小計 **** ¥□□ 年度計 **** ¥□□ マクロに詳しい方、アドバイスよろしくお願いします!
- ベストアンサー
- オフィス系ソフト
- EXCELの関数:SUMについて
WINDOWS XP で EXCEL2002 を使っています。 A B C 1 1 2 2 3 3 4 4 5 5 6 6 7 =SUM(A1:A3) 8 =SUM(A4:A6) 上記のように数式を入力していますが、データを1行目から6行目まで 順に入力をしていくと3行目まで入力した状態では7行目の数式は SUM(A1:A3)で答えも6となっています。ところが4行目に4を入力すると数式はSUM(A1:A4)で答えも10となります。次の行も入力すると 数式はSUM(A1:A5)となります。 どうすれば、数式を変化させないようにできますか? また、なぜ、このようになるのか、詳しい方、お教え下さい。
- ベストアンサー
- その他(業務ソフトウェア)
- ExcelのSUM関数の集計範囲を可変にしたい
ExcelのSUM関数の集計範囲を可変にしたい 1.状況、問題点 商品毎の売上、利益を管理するリスト表が あり、その表の行に対する追加、更新処理を VBAマクロで行っています。 使用環境はExcel2010 リスト表は、帳票としての見易さを考慮して、 同じカテゴリに属する複数の行に対して小計行 を設けカテゴリ別の売上、利益を集計しています カテゴリに属する行範囲に対してSUM関数を使っ ているということです (例1)この表にマクロで行を追加させる際、 あるカテゴリの小計欄で参照している集計 範囲の行の途中に行を挿入する場合は、行 を追加してもSUM関数の集計範囲は自動的に 拡大されます。 A B C 1 項目 売上 2 田中 100 3 小計 100 4 山田 200 ⇒ 挿入 5 佐藤 300 6 小計 600 式 = SUM(C4:C5) 3行目と4行面の間に行を挿入するとき SUM関数の集計範囲は自動的に拡大され る SUM(C2:C4) ⇒ SUM(C2:C5) (例2)挿入する行が集計行の直ぐ上の場合 SUM関数の集計対象範囲がずれてしまう A B C 1 項目 売上 2 田中 100 3 小計 100 4 山田 200 5 佐藤 300 ⇒ 挿入 6 小計 600 ※ ※ 式 SUM(C4:C5) は 自動的にはSUMC(C4:C6)とはならない 2.実現したいこと 小計の直前にに行を挿入した場合も自動的に 集計範囲が変わるようにしたいのです。 実装方法 案1 (1)インストラクタのネタ帳 http://www.relief.jp/itnote/archives/003417.php に、「表全体の最後の行」※に集計行がある場合として 「合計範囲を自動的に変更する」方法の紹介あり。 この方法はCOUNTA()で入力済みのセルをカウント。 私のケースでは ・売上、利益などのセルが空白となる場合がある ・C列は 売上 データを記載する列で なので半角スペースや全角スペース は入らない ・#REFやDIV/!0などは入りうる C4:C5 のセル数は DIV/0!なども含めデータが入っているセル数 +ブランクが入っているセル数 は COUNTA(C4:C5) + COUNTBlank(C4:C5) なので セル C5 =SUM(C2:INDEX(C4:C5, COUNTA(C4:C5)+COUNTBlank(C4:C5)) とするか? ※「インストラクタのネタ帳」の方法は、「表全体の行数」を もとめる場合に最後の行までを指定できて有効ですが、上の ように小計をもとめる場合は、どうしても小計をもとめる範囲 式に書く必要があり、そこが集計範囲が変わってしまうと役に 立たないです。 代案としては、6行目の小計の行番号から3行目の小計の行番号 を引いて行数を求める方法でしょうか この方法の場合、小計の式に 6行目行番号-3行目行番号 のように具体的に記述してはNGなので "下"の小計行から"上" の小計行を引く というような間接的な指定の仕方が必要と 考えています。案1の検討はここまでです。 実装方法 案2 上のように表自体の集計関数を変える以外に、 マクロで対応する方法 行を追加する際に、 a)行の追加がある場合、行の挿入位置が小計 の集計範囲の”途中”なら 何もしない、 b)追加する行が集計行のすぐ上になる場合 つまり変更前の挿入位置+1 が小計行の行番号と等しい時は、追加する行数分 SUM関数の集計範囲を広げる 案1が難しそうなので案2で実装しようと思っています Q1 案1と案2の検討結果についてお気づきの点があれあば教えて ください Q2 可能であれば、案2の実装方法についてヒント程度でもいいので 教えてください 以上
- ベストアンサー
- Excel(エクセル)
- エクセルVBA 変数定義とループ条件
エクセル2003を使用しています。 普段は他の人が書いたソースを見て修正して使用する程度なのですが、今回 初めて一から作成しようとしております。以下のような動きです。 ○条件 sheet1~sheet3までの3シート。各シートの一番上は項目行。 sheet1とsheet2のみデータがあり、sheet3は項目行のみ。 ○動作 ・sheet1のC2とsheet2のC2を比較し、同じだったらsheet3の2行目にsheet1のA2,B2,C2を挿入。 続けて、その右側にsheet2のA2,B2を代入。(sheet3のA2~E2までが埋まることになります) ・比較した値が間違っていたらsheet3はいじらない。 ・次に、sheet1のC2とsheet2のC3を比較し、同じであれば値をsheet3のひとつ下の行に代入していく。(今度はA3~E3) ・Sheet1のC列とSheet2のC列の全ての組み合わせで比較をしていく。 このような動作をするため、 If Sheet2.cells(2,2) = sheet1.cells(2,2) then Sheet3.cells(2,1).value = sheet1.cells(2,1) Sheet3.cells(2,2).value = sheet1.cells(2,2) Sheet3.cells(2,3).value = sheet1.cells(2,3) Sheet3.cells(2,4).value = sheet1.cells(2,1) Sheet3.cells(2,5).value = sheet1.cells(2,2) End If まずこのような形を作って動かしたら、一番最初の行については比較、値の代入ができました。 ここで、これをループさせて上記条件の動作をさせたいのですがどれを変数にし、どのようにループさせたらいいかが見当がつきません。 分かりづらいかもしれませんがご回答いただければ幸いです。 よろしくお願いいたします。
- ベストアンサー
- その他MS Office製品
- 【エクセル】横方向へ複数行の数式をコピー
こんばんは^^ ちょっとエクセルで苦戦してる作業があるので何か良い方法があったら教えてください。 a b c d e(列) ------------------ 1| 2 3 3 2 1 2| 2 4 1 3 2 ・ ・ 9| sum c9/a9 sum b9*c9 b9+d9 (小計の行) 10| 2 3 3 2 1 ・ ・ ・ 14| 2 1 2 2 5 15| sum ・・・・ (小計の行) ・ ・ ・ 上記のようなレイアウトにしたとします。 1.小計行がたくさんあります。 2.それぞれの小計で合計する行数が違います。 3.横方向にsumを手軽にコピーしたいけど、列が多く、ところどころに関数が入っているので、無闇にドラッグしたりできません。 今は、例えば9行の小計を1つsumを使った後、関数が入っていない空白セルのみをctrlキーを駆使して1つ1つクリック、ペースト そして、次の小計行へ行き同じ作業を繰り返してます。 ただ、これだと横にも縦にも長いデータが入ってるので労力使いすぎます(^^; フィルタをかけて「空白以外」にして、横方向にsumをドラッグが出来たら良いなーって思ったんですが、フィルタって列にかけられないですよね? 何か良い方法ってありますか?
- ベストアンサー
- オフィス系ソフト
- エクセル SUM関数の範囲を変数に
A1からA20まですべて1が入力されているとします B1に数値が入力されて、その中身は変化します C1に =SUM(A1:A10) と入力されるとC1は、10となります。 ここで、B1の数値が 5の時は C1の内容を =SUM(A1:A5) 12の時は C1の内容を =SUM(A1:A12) としたいのです。 どのようにすればいいのでしょうか?
- ベストアンサー
- オフィス系ソフト
- 変数に範囲もしくはワイルドカードを指定する方法
エクセルで変数に A > -100 and < 100のように数値を指定することはできるでしょうか。 以下の式はa~gまでの変数を全て足した値がそれぞれ該当の列での計算結果と一致していたら、セルを赤くするというものですが、a~gの全て使うのではなく、a~cまでしか使わないという時があります。 ですので、デフォルト値を範囲指定したり、ワイルドカードにすれば、計算結果に支障がでないと考えたのですが、そのようなことはできますか? もしくは他にうまいやり方があったら教えて下さい。 a= 2 b = -2 省略 g = 4 For i = 1 to 最終行 If (Cells(i, "E").Value = a) And (Cells(i, "G").Value = a + b) And (Cells(i, "H").Value = a + b + c) And (Cells(i, "I").Value = a + b + c + d) And 省略 Then Cells(i, "E").Interior.Color = RGB(255, 0, 0) End If Next i
- ベストアンサー
- その他MS Office製品
- EXCELでマクロを使って、小計、合計の出し方
1.部の中にそれぞれ、営業1課、営業2課、…があり、社員と売上金額が表示されている下記のようなデータがあります。 部、課、社員の数は、実際はもっとたくさんあり、それぞれの件数は、毎月変化します。 マクロを使って、課毎計、部毎計、総合計を出す方法を教えて下さい。 試しに作りましたら、下記のような結果になり、うまくいきません。 元データ 部 課 社員 金額 A 営業1課 a 10 A 営業1課 b 20 A 営業1課 c 30 A 営業2課 d 40 A 営業2課 e 50 A 営業2課 f 60 B 営業1課 g 70 B 営業1課 h 80 B 営業1課 I 90 B 営業2課 j 100 B 営業2課 k 110 B 営業2課 l 120 実行結果 × 正解 部 課 社員 金額 金額 A 営業1課 a 10 10 A 営業1課 b 20 20 A 営業1課 c 30 30 営業1課 計 60 60 A 営業2課 d 40 40 A 営業2課 e 50 50 A 営業2課 f 60 60 営業2課 計 210 150 A 合計 110 210 B 営業1課 g 70 70 B 営業1課 h 80 80 B 営業1課 I 90 90 営業1課 計 240 240 B 営業2課 j 100 100 B 営業2課 k 110 110 B 営業2課 l 120 120 営業2課 計 570 330 B 合計 230 570 総合計 780 780 Sub 合計計算() Sheets("元").Select Sheets("元").Copy Before:=Sheets(2) Dim GYO1 As Long '部 グループの先頭行 Dim GYO2 As Long '部 グループの最終行 Dim GYO3 As Long '課グループの先頭行 Dim GYO4 As Long '課グループの最終行 Dim GYO As Long '小計、合計行 Dim strFORMULA As String GYO = 2 '空白でない間、次の作業を繰り返す Do While Cells(GYO, 1).Value <> "" GYO1 = GYO GYO = GYO + 1 '部が同じ間、次の作業を繰り返す Do While Cells(GYO, 1).Value = Cells(GYO1, 1).Value GYO = GYO + 1 '課が同じ間、次の作業を繰り返す GYO3 = GYO Do While Cells(GYO, 2).Value = Cells(GYO3, 2).Value GYO = GYO + 1 Loop '課計 GYO2 = GYO - 1 Rows(GYO).Insert Cells(GYO, 2).Value = Cells(GYO3, 2).Value & " 計" Cells(GYO, 4).FormulaR1C1 = "=SUBTOTAL(9,R" & GYO1 & "C:R" & GYO2 & "C)" GYO = GYO + 1 Loop '部計 GYO4 = GYO - 1 Rows(GYO).Insert Cells(GYO, 1).Value = Cells(GYO1, 1).Value & " 合計" Cells(GYO, 4).FormulaR1C1 = "=SUBTOTAL(9,R" & GYO3 & "C:R" & GYO4 & "C)" GYO = GYO + 1 Loop ' 総合計 Cells(GYO, 1).Value = "総合計" Cells(GYO, 4).FormulaR1C1 = "=SUBTOTAL(9,R1C:R" & GYO2 & "C)" Range("A1").Select End Sub 2.尚、この質問のように表形式のデータを間隔をあけて原稿を作成しても確認画面になると、間隔が詰まります。間隔が詰まらない方法も教えて下さい。
- ベストアンサー
- オフィス系ソフト
- エクセル 空白行にSUM関数を入力するには
下記の様な、データ行数の決まっていない各空白行に自動でSUM関数を入力するにはどうすれば良いでしょうか。 A列 B列 C列 1行 123 酒 100 2行 123 酒 100 3行(空白) (SUM) 4行 215 ビール 200 5行 215 ビール 200 6行 215 ビール 200 7行(空白) (SUM) 8行 324 ワイン 300 9行 324 ワイン 300 10行 324 ワイン 300 11行 324 ワイン 300 12行(空白) (SUM) (SUM)表記のセルにそれぞれのデータのSUM関数を自動で入れたいのですが。 実際のデータは3千行ほどあります。よろしくお願いいたします。
- ベストアンサー
- その他MS Office製品
お礼
ありがとうございます。 下記のように作り、問題なく動きました Cells(COUNT_B, 4).Value = "=SUM(D" & COUNT_D & ":D" & COUNT_E & ")" Range(Cells(COUNT_B, 4), Cells(COUNT_B, 4)).Select Selection.Copy Range(Cells(COUNT_B, 4), Cells(COUNT_B, 16)).Select ActiveSheet.Paste