Excelスプレッドシートで値を「グループ化」する方法を見つけようとしています。
次の例を考えてみましょう(これは私が私のレストランで使う在庫シートです:)
スプレッドシートの右端に、売上原価という列があります。
各カテゴリの総COGS値を考え出したいと思います。
これはExcelで可能ですか?さらに、最初のワークシート(図に示されているもの)が影響を受けないように、別のワークシートで実行したいと思います。
何か案は?
ありがとうございます。
あなたが使いたい機能は、 ピボットテーブル です。あなたがその機能の使い方を学んだら、ほんの数クリックであなたが望むことを正確にやるのは本当に簡単です。
小計機能でこれを行うこともできます。
例えば...
が変わるたびに:カテゴリ
関数を使用します。Sum
小計をに追加します。売上原価
たとえば、1週間目に、食料品のようなアカウントの総COGSを探しているとします。
sumif
はそのデータを思いつくための最も簡単な方法です。あなたの写真から取った例:
=sumif(d2:d?,"grocery",j2:j?)
シート全体が見えないので、疑問符を付けました。アカウントデータがある列D全体を選択します。 D2からD?、毎週の使用量の列J2からJ?と同じ。
式は、テキストの食料品のD列を調べます。それが存在する場合、Wordの食料品を含むD列に対応するJ列のセルを追加します。 (またはあなたがそれを探すためにあなたが式に入れたどんなテキストでも)
最も簡単な方法は、Excelのソート操作とそれに続くExcelの小計操作です。
ピボット操作のようにデータ全体のレイアウトを変更することなく、目的のデータを取得できます。
ソート
小計
カテゴリが変わるたびに(ドロップダウン矢印をクリックして選択) 使用機能 Sum(ドロップダウン矢印をクリックして選択) 追加[販売価格]の小計(カテゴリごとに合計したい列を選択します)
Click OK!
Excel 2013では、 "グループ化"オプションがあります。
下のスクリーンショットを見てください、残念ながらそれはドイツ語です - しかしアイコンはあなたがそれを見つけるのを助けるでしょう。
私はいつもこれをvbaでやっています。私はオフィス95 'から同じ方法を使用したことを確信していますが、列の配置を少し変更しました。変数を定義しなければ、より少ない行数で実行できます。通過する行がたくさんある場合や、グループを定義するために必要なものがもっとある場合は、より早く実行できます。
私は「グループ」が2〜5個のセルに基づいている状況に遭遇しました。この例では1つの列のみを見ていますが、誰かが時間をかけてプレイすれば簡単に拡張できます。
これは3列を想定しており、group_values列でソートする必要があります。マクロを実行する前に、group_values列で比較する最初のセルを選択してください。
'group_values、some_number、empty_columnToHoldSubtotals '(ものはここに入ります) 'cookie 1 empty ' cookie 3 empty 'cake 4 empty [ [ハット0は空 ]ハット3は空[ ] ... [ ] '停止
Sub subtotal() 'は、2つの文字列と1つの小計カウンターを定義します。 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)]セルが等しい場合、 'サブカウントにサブカウントが追加されます subCount = subCount + ActiveCell.Offset(0、1)。値 'セルが等しくない場合は 'サブカウントが書き込まれ、小計がリセットされます。 ActiveCell.Offset(0、2).Value = ActiveCell.Offset(0、1)。値+ subCount subCount = 0 End 'の場合、次のセルを選択します ActiveCell.Offset(1、0)。[。]を選択します。アクティブセルとその下のセルの値を変数に割り当てます。thisOne = ActiveCell.Value thatOne = ActiveCell.Offset(1、0) 。[]。Wend End Sub