質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

87.59%

条件付の合計の計算の仕方

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 5,414

score 14

 前提・実現したいこと

条件付の合計の計算の仕方をご教授ください。

●「データ」シート
ある売上の一覧です。
A10セルから始まり、AV列までデータがあります。行数はその時によって変わります。
コード列・・・D列
税抜金額・・・AL列

●「集計」シート・・・コードは現在35個あります。
イメージ説明

この2シートがありまして、データシートをもとに、集計シートにコードごとの税抜金額を合計を出したいです。
sumif関数を使うやり方と、valueを使うやり方を試しましたがうまく行きませんでした。

宜しくお願い致します。

 該当のソースコード

(valueを使ったコードです。めちゃくちゃなコードでしたらすみません)
Public Sub 作成()
    Const ORG_ROW As Long = 11 '「データ」シートのデータ開始行    
    Const SHUKEI_MIDASI As Long = 1 '「集計」シートの見出し行数

    Dim sh_date As Worksheet '「データ」シート
    Set sh_date = ThisWorkbook.Worksheets("データ")    
    Dim sh_shukei As Worksheet
    Set sh_shukei = ThisWorkbook.Worksheets("集計")    
    Dim codeRng As Range '「データ」シートの取引先コードセル    
    Dim basecell As Range '「データ」シートのデータ転記開始セル
    Set basecell = sh_date.Range("D11") 
    Dim gyosu As Long '「データ」シートの最終行
    gyosu = basecell.End(xlDown).Row   
    Dim shukeiKiten As Range '「集計」シート集計表の基点セル
    Set shukeiKiten = ThisWorkbook.Worksheets("集計").Range("A1")

    Dim uriagekin As Long '売上金額
    Dim i As Long '各コードの売上金集計用変数
    Dim cnt As Long
    cnt = 1
    Dim j As Long

    For j = 1 To shukeiKiten.CurrentRegion.Rows.Count - SHUKEI_MIDASI
     For i = ORG_ROW To gyosu
         If sh_date.Cells(i, 4) = sh_.Cells(j, 1).Value Then
          uriagekin = uriagekin + sh_date.Cells(i, 38)
         End If
     Next i
     j = j + 1
    Next j

End Sub

 補足情報(FW/ツールのバージョンなど)

SUMIFのコードです。
実行しても何も起きませんでした。

Worksheets("集計").Cells(2, 4).Value = _
        WorksheetFunction.sumif(Worksheets("データ").Range("E10:E73"), _
        Worksheets("集計").Range("A2"), Worksheets("データ").Range("AL11:AL73"))
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

+1

SUMIFによる数式です。

D2セル

=SUMIF(データ!D:D,A2,データ!AL:AL)


あとはこれを全行にコピペ。


編集された質問を確認しました。
範囲がE列を参照しています。
集計範囲も11行目からになっています。
これでいけます。

Worksheets("集計").Cells(2, 4).Value = _
        WorksheetFunction.sumif(Worksheets("データ").Range("D10:D73"), _
        Worksheets("集計").Range("A2"), Worksheets("データ").Range("AL10:AL73"))

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/04/05 17:30

    データの方は$で固定しないと駄目じゃないですか?

    キャンセル

  • 2018/04/05 17:33

    縦方向のコピペだから大丈夫だと思いますけど。

    キャンセル

  • 2018/04/05 17:36

    できました!
    ループ化してみます。
    ご回答ありがとうございます。

    キャンセル

  • 2018/04/11 16:40

    無事完成しました。ありがとうございました。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 87.59%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る