Excelで列を「グループ化」して合計するにはどうすればよいですか?


144

Excelスプレッドシートで値を「グループ化」する方法を見つけようとしています。

次の例を考えます(これはレストランで使用する在庫シートです)。

サンプルスプレッドシート

スプレッドシートの右端には、Cost of Goods Soldという列があります。

各カテゴリの合計COGS数値を算出できるようにしたいと思います。

これはExcelで可能ですか?さらに、最初のワークシート(図に示されているもの)が影響を受けないように、別のワークシートでそれを行いたいと思います。

何か案は?

ありがとう!

回答:


89

使用する機能はピボットテーブルです。その機能の使用方法を習得すれば、数回クリックするだけで目的の操作を簡単に実行できます。


50
これは質問に答えません
鉄の救世主

1
この回答にはいくつかの基本的な指示がありますstackoverflow.com/a/15838994/74585
Matthew Lock

1
スクロールして、明確で簡潔な答えを見つけてください:superuser.com/a/1204086/164123
ジョーダンモリス

58

小計機能を使用してこれを行うこともできます。

  1. Excelのリボンツールバーの[データ]タブをクリックします
  2. [並べ替え]ボタンをクリックし、カテゴリ列で並べ替えます
  3. [小計]ボタンをクリックし、必要に応じてダイアログに入力し、[OK]をクリックします

例えば...

変更のたびに: カテゴリ

使用機能: 合計

小計を追加: 売上原価


3
小計ボタンはどこにありますか?スクリーンショットを追加してもらえますか?
マシューロック

3
@MatthewLock addintools.com/documents/excel/where-is-subtotal-button.html(およびi.imgur.com/kkSa2AB.png)を参照してください。Tablesを使用する場合、ボタンは無効になっていることに注意してください。
マットウィルキー16

15

たとえば、食料品などのアカウントの第1週の合計COGSを探していると仮定しています。

sumifそのデータを見つける最も簡単な方法です。あなたの写真から取られた例:

=sumif(d2:d?,"grocery",j2:j?)

シート全体が表示されないため、疑問符を付けました。アカウントデータがある列D全体を選択します。D2からD ?、週次使用列J2からJ?と同じ。

数式は、テキスト食料品のD列を調べ、存在する場合は、食料品という単語が含まれるD列に対応するセルを列Jに追加します。(または検索式のために数式に入力したテキスト)


これは、非常に簡単で優れたソリューションです。ピボットテーブルは、このような多くのニーズに対して過剰です。
T.ブライアンジョーンズ

5

最も簡単な方法は、Excelの並べ替え操作とそれに続くExcelの小計操作です。

ピボット操作のようにデータのレイアウト全体を変更することなく、求めるものを生成します。

仕分け

  • [ データ ]タブをクリックします(またはキーボードのAlt-Aを押します)
  • [ 並べ替え]をクリックします(またはキーボードのSを押します)
  • ポップアップウィンドウのメイン領域の[並べ替え]の横にある下向き矢印をクリックします。
  • これはグループ化するものなので、「カテゴリ」を選択します。
  • OKをクリックしてください!

小計

  • [ データ ]タブをクリックします(またはキーボードのAlt-Aを押します)
  • 小計アイコンをクリックします(またはキーボードのBを押します)
  • データがソートされたので、自然な英語を読んでいるかのように小計ポップアップを読んで記入してください
           の各変更で
              カテゴリ(ドロップダウン矢印をクリックして選択します)
           機能を使用
              合計(ドロップダウン矢印をクリックして選択します)
           に小計を追加
              売上原価(カテゴリごとに合計する列を選択します)

       Click OK!
    


  • 4

    Excel 2013には「グループ化」オプションがあります。

    1. テーブルを選択します。
    2. [データ]タブに移動します。
    3. [構造]> [グループ化]をクリックします。

    下のスクリーンショットをご覧ください。残念ながら、それはドイツ語ですが、アイコンはそれを見つけるのに役立ちます。

    グリダーン> Gruppieren


    4

    これをピボットテーブルで行うには

    1)すべてのデータ(列ラベルを含む)を選択します
    2)挿入>ピボットテーブル
    3)列または行エリアにグループ化するディメンションを
    ドラッグします4)値エリアに合計するメトリックをドラッグします

    ここに画像の説明を入力してください


    これは受け入れられた答えであるはずです
    ジョーダンモリス

    1
    Excel v.16.28には「挿入」ではなくData/がありますSummarize with PivotTable
    うなぎghEEz

    1

    私はこれを常にVBAで行います。Office 95 '以降、同じ方法を使用し、列の配置に若干の変更を加えたと確信しています。変数を定義しない場合、より少ない行で実行できます。通過する行が多い場合、またはグループを定義するために必要なものが多い場合は、より高速に実行できます。

    「グループ」が2〜5個のセルに基づいている状況に遭遇しました。この例では1つの列のみを調べていますが、誰かが時間をかけてプレイすれば簡単に拡張できます。

    これは3つの列を想定しており、group_values列でソートする必要があります。マクロを実行する前に、group_values列で比較する最初のセルを選択します。

    'group_values、some_number、empty_columnToHoldSubtotals
    '(ここに行く)
    'cookie 1は空です
    'cookie 3は空です
    空のケーキ4
    'hat 0 empty
    「帽子3は空です
    '...
    'やめる
    
    小計()
      '2つの文字列と小計カウンターを定義する
      Dim thisOne、thatOne As String
      Dim subCount As Double
    
      '値をシードします
      thisOne = ActiveCell.Value
      thatOne = ActiveCell.Offset(1、0)
      subCount = 0
    
      '停止値に達するまで進むループを設定します
      While(ActiveCell.Value <> "stop")
    
        'セル値をその下のセルと比較します。
        If(thisOne = thatOne)Then
          'セルが等しい場合、行カウントがサブカウントに追加されます
          subCount = subCount + ActiveCell.Offset(0、1).Value
    
        その他
          'セルが等しくない場合、サブカウントが書き込まれ、小計がリセットされます。
          ActiveCell.Offset(0、2).Value = ActiveCell.Offset(0、1).Value + subCount
          subCount = 0
    
        終了する
    
        '次のセルを選択
        ActiveCell.Offset(1、0).Select
    
        'アクティブセルとその下のセルの値を変数に割り当てます
        thisOne = ActiveCell.Value
        thatOne = ActiveCell.Offset(1、0)
      ウェンド
    
    サブ終了
    

    -2

    1)データの範囲を選択します。
    2)範囲をクリップボードにコピーします。
    3)新しいデータベースアクセスを開きます。
    4)新しいテーブルまたは貼り付け範囲を設計します。
    5)ビュー、SQLビューを作成します。
    6)クエリ「SELECT cell、SUM(data)AS Total FROM Table GROUP BY cell」を作成します。


    弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
    Licensed under cc by-sa 3.0 with attribution required.