[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『SUMIFマクロにて』(困りました)
いつもこちらのサイトにお世話になっております。
探しきれなかったのか、現在掲載されているもので解決ができません
でしたので、今回掲載させていただきます。
同じ行に適用するSUMIFのマクロを作りたいと考えているのですが、
列の数が毎回変わるので、その範囲の指定の方法に困っています。
A行の番号を元にC列の数値の合計をD行に出すSUMIFで、
例えば、D2=SUMIF($A$2:$A$20345,A2,$C2:$C$20345)
これを、D3=SUMIF($A$2:$A$20345,A3,$C2:$C$20345)
という感じにやっていくのですが(このケースだと、D20345まで)、
この列数が毎回変わるので、マクロにしたときにどうしたらいいだろう
と考えています。
マクロは記録で主にやっているので、VBAの方も少しずつ勉強しているものの
あまり良くわかってはいません。
どのようにしていけばいいか、教えていただけませんでしょうか。
Excelは2002か2003なはずです。
>列の数が毎回変わるので これは、数式第2引数「検索値」(A2)セルの事ですか?
>例えば、D2=SUMIF($A$2:$A$20345,A2,$C2:$C$20345) ここの、「A2」「A3」・・・のセル~~~~の事?
でしたら、マクロの記録を試してみられると良いと思いますが。。。
それとも、数式を埋め込む範囲が変わる と言う事かな。。。?
(HANA)
よろしくお願いいたします。
(困りました)
>今回は列が2〜20345 【行】ですね?
色々方法は有ると思いますが以下の様な考え方で 1.データの最終行数を確認 2.数式内の該当の部分(2箇所)に1の数を当てはめる 3.E列の2行目から1の数のセルまで、2の式を入れる。
Sub TEST() Dim mxr As Long mxr = Range("A" & Rows.Count).End(xlUp).Row Range("E2:E" & mxr).Formula = _ "=SUMIF($A$2:$A$" & mxr & ",A2,$C2:$C$" & mxr & ")" End Sub
因みに、 =SUMIF($A$2:$A$20345,A2,$C2:$C$20345) ここの「$C2」が/~~~ 「$C$2」と、行方向は絶対参照に成っていないのは 意図した事ですか?書き間違えでしょうか?
(HANA)
こういう事でしょうか? A2が可変に・・・
Sub test() Dim LRow As Long With Range("A:A,C:C") LRow = .Find("*", .Cells(1), xlFormulas, xlPart, xlByRows, xlPrevious, False, False, False).Row End With Range("D2:D" & LRow).FormulaR1C1 = "=SUMIF(R2C1:R" & LRow & "C1,RC1,R2C3:R" & LRow & "C3)" End Sub
(momo)
こんな感じで
With Range("a1", Range("a" & Rows.Count).End(xlUp)) .Offset(, 3).Formula = "=sumif(" & .Address(, , -4150) & _ ",rc1," & .Offset(, 2).Address(, , -4150) & ")" .Value = .Value End With (seiya
あっっ、↑上のコードですが 間違って、E列に数式を書いてますね。。。 済みませんが、Dに直して下さい。。。
因みに。。。 >列が2〜20345(A,C,D全て)なのですが、 >これが2〜42421だったり、2〜34245だったり >ファイルによって、範囲の終わりの列が変わってしまう 最後のセルまで入力が有るばあいで どの行もC列の全体で集計して良いなら
1.A列をコピーして、D列に貼り付け (D列の数式を入れたいセル範囲に先に何かの入力が有るなら この1番の作業は不要になります。) 2.D2セルを選択して、Ctrl + Shift + ↓ 3.=SUMIF(A:A,A2,C:C) を入れて Ctrl + Enter
を記録にとっても、出来ると思います。
(HANA)
昨日は出来ていたのですが、今日になってどうもできなくなってしまいまして…
昨日、こちらの書き込みを踏まえて、
Sub Macro9()
Columns("D:D").Select Selection.Insert Shift:=xlToRight
Dim saigo As Long saigo = Range("A" & Rows.Count).End(xlUp).Row
y = 2
Do While Cells(y, 1).Value <> "" Cells(y, 4).Value = _ "=SUMIF($A$2:$A$" & saigo & ",A" & y & ",$C$2:$C$" & saigo & ")"
y = y + 1
Loop End Sub
といった具合にやって、大丈夫だったのですが、
このマクロを他のファイルに適用すると、
なぜか、D15=SUMIF($A$1:$A$2,A15,$C$1:$C$2)
という感じになり、
行の最後を認知しないようなのです(範囲としたいのは、2〜40000程の行)。
何か原因が分かる方、いらっしゃいますでしょうか…。
たびたび申し訳ございません。
へ継続につき、ここのレスは削除 ↓ [[20100315172441]] 『最終列の認知方法』(困りました)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.