- ベストアンサー
画像データから日付ごとに条件ごとに集計したい方法
- 画像データの元の表から、日付ごとに条件ごとに集計するためにはSUMIF関数を使用します。
- たとえば、1月1日の場合は通常番号(1と2)の金額を合計して25,000円にし、件数はC2に代入します。
- さらに、★1と★2の金額を合計して40,000円をB3にし、件数をC3に代入します。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
現在のデータ構成表からはご要望を達成する事は無理とは云いませんが非常に難しい数式が必要です。 表の工夫次第で簡単になりますのでご一考下さい。 一例です。 (1)1行に番号に関わる情報を全て設定する(C列、D列を2行から2列) (2)日付と番号情報と合成(=A1&B1)して別列に一意データを設定する(仮にyyyymmddsnn:西暦とsは0を普通、1を★付き番号、nnは一連番号) 以下のSUMIF関数(エクセル2003以下では単一条件しかできない、エクセル2007以上は複数条件が可能)でも計数できるようになると思いますが如何でしょうか。 普通番号は=SUMIF(検索列,text(対象日付セル,"yyyymmdd"&"0*",金額又は件数の列) ★付き番号は=SUMIF(検索列,text(対象日付セル,"yyyymmdd"&"1*",金額又は件数の列)
その他の回答 (2)
- KURUMITO
- ベストアンサー率42% (1835/4283)
元のデータ表がシート1に有るとして、またデータは2行から下方に有るとして、E2セルには次の式を入力して下方にオートフィルドラッグします。 =IF(D2="","",IF(A2<>"",A2+D2*10^-8,IF(AND(A2="",ISERROR(FIND("★",B2)),ISERROR(FIND("★",E1))),IF(B2<>"",E1+D2*10^-8,E1+D2*10^-10),IF(AND(A2="",ISNUMBER(FIND("★",B2)),ISERROR(FIND("★",E1))),"★"&(INT(E1)+D2*10^-8),IF(AND(A2="",ISNUMBER(FIND("★",E1))),IF(B2<>"","★"&(MID(E1,2,16)*1+D2*10^-8),"★"&(MID(E1,2,16)*1+D2*10^-10))))))) また、F2セルには次の式を入力して下方にオートフィルドラッグします。 =IF(LEFT(E2,6)=LEFT(E3,6),"",IF(AND(NOT(ISNUMBER(E3)),ISNUMBER(E2)),INT(E2),IF(AND(NOT(ISNUMBER(E2)),ISNUMBER(E3)),"★"&INT(MID(E2,2,6)*1),""))) そこでお求めの表ですが例えばシート2のB1セルには金額、C1セルには件数と入力します。 A2セルから下方に1月1日から1行おきに連続して日付を入力するとしてA2セルには次の式を入力して下方にオートフィルドラッグします。 =IF(MOD(ROW(A1),2)=1,DATE(2010,1,ROUNDUP(ROW(A1)/2,0)),"") B2セルには次の式を入力してC2セルまでオートフィルドラッグしたのちに下方にもオートフィルドラッグします。 =IF($A2<>"",IF(COUNTIF(Sheet1!$F:$F,$A2)=0,"",IF(COLUMN(A1)=1,MID(INDEX(Sheet1!$E:$E,MATCH($A2,Sheet1!$F:$F,0)),7,8)*1,MID(INDEX(Sheet1!$E:$E,MATCH($A2,Sheet1!$F:$F,0)),15,2)*1)),IF(COUNTIF(Sheet1!$F:$F,"★"&$A1)=0,"",IF(AND($A2="",$A1<>""),IF(COLUMN(A1)=1,MID(INDEX(Sheet1!$E:$E,MATCH("★"&$A1,Sheet1!$F:$F,0)),8,8)*1,MID(INDEX(Sheet1!$E:$E,MATCH("★"&$A1,Sheet1!$F:$F,0)),16,2)*1))))
- MackyNo1
- ベストアンサー率53% (1521/2850)
ご希望のレイアウトにまとめるには以下のような手順で数式を作成するのが最も簡単な対応だと思われます。 まず、数式を簡略化するために、以下の操作で元データのA列にすべて日付を入力します(必要ならこのデータを条件付き書式を利用して見掛け上非表示にすることもできます)。 A列のデータ範囲を選択してCtrl+Gでジャンプダイアログを出して、「セル選択」から「空白セル」にチェックを入れて「OK」し、空白セルを選択した状態で、数式バーに「=A2」のようにアクティブセルの1つ上のセルを選択し、Ctrlキーを押しながらEnterします。 上記の表のリストにしてあれば、転記表シートの各セルに以下のような数式を入力するとそれぞれの集計を行うことができます。 B2セル =SUMPRODUCT((Sheet1!$A$2:$A$300=MAX($A$2:A2))*ISNUMBER(Sheet1!$B$2:$B$300)*(Sheet1!$C$2:$C$300="料金")*Sheet1!$D$2:$D$300) B3セル =SUMPRODUCT((Sheet1!$A$2:$A$300=MAX($A$2:A3))*NOT(ISNUMBER(Sheet1!$B$2:$B$300))*(Sheet1!$C$2:$C$300="料金")*Sheet1!$D$2:$D$300) C2セル =SUMPRODUCT((Sheet1!$A$2:$A$300=MAX($A$2:A2))*NOT(ISNUMBER(Sheet1!$B$2:$B$300))*(Sheet1!$C$2:$C$300="料金")*Sheet1!$D$2:$D$300) C3セル =SUMPRODUCT((Sheet1!$A$2:$A$300=MAX($A$2:A3))*NOT(ISNUMBER(Sheet1!$B$2:$B$300))*(Sheet1!$C$2:$C$300="料金")) 以上4つのセルを選択し、下方向に日付分だけオートフィルします。
補足
一意データの設定はよくわからないのですが、教えてください。