- ベストアンサー
Excelの数式について教えてください
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
作業列を使用するのでしたら、SUMPRODUCT関数を使う必要はありません。 SUMPRODUCT関数は計算処理の際の負荷が大きくなりがちという短所があります。(もっとも、元データの表の行数が1000行にも満たない場合には、計算処理に要する時間は、さほど長くなる事は無いと思いますが) 以下は、Sheet3のA列を作業列として使用して、SUMPRODUCT関数を使わずに、Sheet2に店舗ごとの特定項目の数字(の合計)を表示させる方法です。 まず、Sheet3のA2セルに次の関数を入力して下さい。 =IF(ISNUMBER(INDEX(Sheet1!$C:$C,ROW())),INDEX(Sheet1!$A:$A,MATCH("*?",Sheet1!$A$1:INDEX(Sheet1!$A:$A,ROW()),-1))&"★"&INDEX(Sheet1!$B:$B,ROW()),"") そして、Sheet3のA2セルをコピーして、Sheet3のA3以下に貼り付けて下さい。 次に、Sheet2のB2セルに次の関数を入力して下さい。 =IF(COUNTIF(Sheet3!$A:$A,$A2&"★"&B$1),SUMIF(Sheet3!$A:$A,$A2&"★"&B$1,Sheet1!$C:$C),"") そして、Sheet2のB2セルをコピーして、Sheet2のB2~C4の範囲に貼り付けて下さい。 後は、Sheet2のA2以下に各店名を入力し、Sheet2のB1~C1に項目名を入力しますと、店舗ごとの特定項目の数字が自動的に表示されます。
その他の回答 (4)
- KURUMITO
- ベストアンサー率42% (1835/4283)
お示しのような表、つまりA,B,Cの3列で1行目が項目名で1店舗あたりに8行が使われ、項目の並びは各店舗同じであるとします。 作業列や高度な関数を使うこともありません次のようにすればよいでしょう。 お示しの表がシート1に有るとしてシート2に表示させるとします。 シート2のA1セルには店名の文字を、B1セルから右横の列にはい、か、などの文字を入力するとします。 A2セルには次の式を入力して下方にドラッグコピーします。 =IF(ROW(A1)>COUNTA(Sheet1!A:A)-1,"",INDEX(Sheet1!A:A,ROW(A1)*8-6)) 店名が自動で表示されます。 B2セルには次の式を入力して右横方向にドラッグコピーしたのちに下方にもドラッグコピーします。 =IF(OR($A2="",B$1=""),"",INDEX(Sheet1!$C:$C,ROW(A1)*8-6+MATCH(B$1,Sheet1!$B:$B,0)-2))
お礼
お礼が遅くなり申し訳ありません。 どうもありがとうございました。
- keithin
- ベストアンサー率66% (5278/7941)
正確な情報が無いと、お互いに無駄仕事をすることになります。 >B列・・・7つほどの項目 必ず7つずつなら次のようにして、基本の関数だけで出来ます。 準備1: E2セルに =E1 と記入し、E7までコピー貼り付ける E1:E7をコピーする A2以下リスト下端まで選ぶ 形式を選んで貼り付けを開始する 数式にマークし、空白のセルを無視するにチェックしてOKする 作業を終えたらE列は消去して良い 準備2: シート2のA2以下に店舗一覧を列記する シート2のB1に「い」、C1に「か」を記入する #参考 シート1のA列をコピーする シート2のA列に貼り付ける シート2のA列を選び、セル結合を解除する シート2のA列を選び、データタブの「重複の削除」を行う 手順: シート2のB2に =SUMIFS(Sheet1!$C:$C,Sheet1!$A:$A,$A2,Sheet1!$B:$B,B$1) と記入、右に下にコピー貼り付けて完成。
お礼
お礼が遅くなり申し訳ありません。 どうもありがとうございました。
- K Kazz(@JazzCorp)
- ベストアンサー率31% (549/1751)
条件: 抜き出したい項目(最大:8?)1つに対して1列をワークに使う。 2項目の場合、FとG列を使う。 F1:「品名?その1」を入れておく。 G1:「品名?その2」を入れておく。 F2:=VLOOKUP($F$1,$B2:$C9,2,FALSE) G2:=VLOOKUP($G$1,$B2:$C9,2,FALSE) F2とG2は下方向にズズっとコピーする。(ちょっと汚いがガマン!)) 各店の先頭行に結果が出る。 店名(A列)は各店ブロックの先頭にあるものとする。 後はこれを引っ張り上げて並べるだけ! J~L列に並べる。 J2:=INDIRECT("$A"&(ROW()-2)*8+2) K2:=INDIRECT("$F"&(ROW()-2)*8+2) L2:=INDIRECT("$G"&(ROW()-2)*8+2) 別シートバージョンは自分でどうぞ!!
お礼
お礼が遅くなり申し訳ありません。 どうもありがとうございました。
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! 画像を拝見するとA列が結合してあるようですね! 集計するに当たってセルの結合があると何か不便です。 そこで↓の画像のように元データ(Sheet1)に作業用の列を設けます。 作業列D2セルに =IF(A2="",D1,A2) という数式を入れオートフィルでずぃ~~~!っと下へコピーしておきます。 そしてSheet2のB2セルに =SUMPRODUCT((Sheet1!$D$1:$D$1000=$A2)*(Sheet1!$B$1:$B$1000=B$1),Sheet1!$C$1:$C$1000) という数式を入れ列方向・行方向にオートフィルでコピーすると 画像のような感じになります。 参考になりますかね?m(_ _)m
お礼
お礼が遅くなり申し訳ありません。 ご丁寧な回答、どうもありがとうございました。 大変参考になりました!
お礼
お礼が遅くなり申し訳ありません。 どうもありがとうございました。 教えてくださった回答を使ってそれぞれやってみたのですが、 kagakusuki様が教えてくださった数式が一番しっくりきて、 手間もかからなかったので使わせていただいています。 大変助かりました。