[[20100312111537]] 『SUMIFマクロにて』(困りました) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『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(A,C,D全て)なのですが、これが2〜42421だったり、2〜34245だったり、マクロを適用するファイルによって、範囲の終わりの列が変わってしまうので、記録だと対応できないな…と思いましての、質問です。

よろしくお願いいたします。

(困りました)


 >今回は列が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.