- ベストアンサー
エクセル:画像のような計算
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
>全く記載のとおりにしましたがJ1~J6が空欄のままでした・・・>< > 何か他に原因などありましたらご教授ください。 B1~G1セルに入力されているデータが、シリアル値で表されている日付データになってはおらず、文字列データになっている事が原因となっている可能性があります。 例えばB1セルを選択した際に、もしB1セルに入力されているデータが日付データであるのならば、数式バー(「fx」と記されている箇所の右隣にある、関数等を入力する欄)には 2015/6/1 などの様に「4桁の西暦年/月/日」の形式で日付が表示されます。 それに対し、「6月1日」と表示される場合は日付データではなく文字列データですので、正しい日付データに入力し直して下さい。 因みに、B1~G1セルに入力されているデータが、数式バー上で「6月1日」という形式で表示される文字列データである場合には、B1~G1セルを纏めて選択してから、セルの書式設定の表示形式を[日付]の 3月14日 とした上で、Excelの置換機能を使用して「日」を同じ「日」に置換する事で、一括して「2015/6/1」の形式のシリアル値の日付データに変換する事が出来ます。(「月」を「月」に置換するのでも構いません) 但し、B1~G1セルに入力されているデータが、数式バー上で「'6月1日」という形式(先頭に「'」が付く)で表示される文字列データである場合には、上記の方法だけでは一括して変換する事は出来ませんので、次の様にして下さい。 まず、B1~G1セルを纏めてコピーして、どこか適当な使用していないセル範囲に「値のみ」を貼り付けて下さい。 次に、その貼り付け先のセル範囲をコピーして、元のB1~G1セルに貼り付け直して下さい。 その上で、先述のセルの書式設定と置換を使用する方法で、日付けデータに変換して下さい。
その他の回答 (3)
- kagakusuki
- ベストアンサー率51% (2610/5101)
まず、J1セルに次の様な関数を入力して下さい。 =IF(OR(ISNUMBER(1/DAY(I1)),COLUMNS($J:J)=1),IF(COUNTIFS($A$1:$H$1,">="&EDATE(SUM(I1),1),$A$1:$H$1,"<9999/12/31"),TEXT(LARGE($A$1:$H$1,COUNTIF($A$1:$H$1,">="&EDATE(SUM(I1),1))),"yyyy/m")+0,""),"") 次に、J1セルの書式設定の表示形式を[日付]の 2001年3月 か又は[ユーザー定義]の yyyy"年"m"月" に設定して下さい。 次に、J2セルに次の様な関数を入力して下さい。 =IF(AND(COUNTIF($A:$A,$I2),ISNUMBER(1/DAY(J$1))),SUMIFS(INDEX($B:$G,MATCH($I2,$A:$A,0),),$B$1:$G$1,">="&J$1,$B$1:$G$1,"<"&EDATE(J$1,1)),"") 次に、J2セルをコピーして、J3~J6の範囲に貼り付けて下さい。 次に、J1~J6の範囲をコピーして、J列よりも右側にある列に(必要な列数だけ)貼り付けて下さい。 以上です。
- imogasi
- ベストアンサー率27% (4737/17069)
SUMIF関数利用、ではどうですか。 例データ A1:G7 -は空白セル 会社名 a 1 2 - 4 5 6 b - 3 - 3 - 1 c 1 4 2 5 -4 c - 5 1 - - -9 a 1 6 - 0 5 -14 b - 7 - -1 - -19 ーー 横方向合計 H2に式 =SUM(B2:G2) 下方向に式を複写 H2:H9 18 7 8 -3 -2 -13 ーーー J3:J5に会社名 a 16 b -6 c 5 K3の式 =SUMIF($A$2:$A$7,J3,$H$2:$H$7) K5まで式を複写。結果は K3:K5に 16 -6 5 ーー エクセルのカテゴリに質問すべきだ。 ここはVBAのコーナー。
お礼
カテゴリを間違えていてすみませんでした。
- shintaro-2
- ベストアンサー率36% (2266/6245)
ピボットテーブルを使うのが良いのでは?
お礼
ありがとうございます。 ピボットで算出されたデータを更に加工する必要があるため質問しました。
補足
いつもありがとうございます。 全く記載のとおりにしましたがJ1~J6が空欄のままでした・・・>< 何か他に原因などありましたらご教授ください。