• ベストアンサー

Excelの数式について教えてください

Excel2000を使っています。 添付ファイルにあるようなデータを、 (・A列・・・店名 ・B列・・・7つほどの項目 ・C列・・・数字(B列の項目に関する数字) 店名ごとに、B列の項目”い”と”か”の行の、C列の数字を 別シートに返したいです。 別シートに返す場合も、添付ファイルにあるように ・A列に店名 ・B列に”い”の項目の数字(元データC列の数字) ・C列に”か”の項目の数字(  〃  ) 以上のように返したいです。 マクロではなく、数式を使ってできますでしょうか? 添付ファイルが見えづらく、さらにわかりづらい文章で申し訳ありませんが、よろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.3

 作業列を使用するのでしたら、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に項目名を入力しますと、店舗ごとの特定項目の数字が自動的に表示されます。

a1213ya
質問者

お礼

お礼が遅くなり申し訳ありません。 どうもありがとうございました。 教えてくださった回答を使ってそれぞれやってみたのですが、 kagakusuki様が教えてくださった数式が一番しっくりきて、 手間もかからなかったので使わせていただいています。 大変助かりました。

その他の回答 (4)

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.5

お示しのような表、つまり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))

a1213ya
質問者

お礼

お礼が遅くなり申し訳ありません。 どうもありがとうございました。

  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.4

正確な情報が無いと、お互いに無駄仕事をすることになります。 >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) と記入、右に下にコピー貼り付けて完成。

a1213ya
質問者

お礼

お礼が遅くなり申し訳ありません。 どうもありがとうございました。

回答No.2

条件: 抜き出したい項目(最大: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) 別シートバージョンは自分でどうぞ!!

a1213ya
質問者

お礼

お礼が遅くなり申し訳ありません。 どうもありがとうございました。

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんばんは! 画像を拝見すると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

a1213ya
質問者

お礼

お礼が遅くなり申し訳ありません。 ご丁寧な回答、どうもありがとうございました。 大変参考になりました!

関連するQ&A

  • エクセルの数式をどのように入れたら良いでしょうか?

    エクセルの数式をどのように入れたら良いでしょうか? いつもこちらでお世話になっています。 今回も教えて頂きたく質問させていただきます エクセルについてですが、 sheet1に入っているデータを sheet2に入力するようにしたいのですが sheet1の A列に1~50までのNo. →A1セルにNo.1、A50セルにNo.50 B列に(1)データ C列に(2)データ があり sheet2の D5のセルに「1」と入力すれば、sheet1!A列の数字とリンクしてsheet!B1の(1)データが入り D6のセルに「10」と入力すれば、Sheet1!A列の数字とリンクしてsheet!C10の(2)データが入る ように設定し、 さらにsheet2のD5,D6のセルに上書きで(繰り返し)数字を入力させ 数式が消えないようにしたいのですが どのようにすればよいでしょうか? 分かりずらい説明で申し訳ありませんが 大変困っているので、アドバイス頂けると助かります。

  • エクセル数式教えてください

    エクセルの数式を教えてください! 参考書をみても適当な数式を探しだせませんでした・・ 売上をのせた一覧表を別シートに飛ばす方法です。 SHEET1  A  B   C  D   1   10日 11日  12日 2ペン 100  150  210 3靴  900  840  920  4鞄  1000  790  980  SHEET2  A  B   C   D 1   12日  11日  10日 2ペン 3鞄 4靴 販売項目(シート2のA列)と日付(シート2の1行目) を入れるとシート1から数字が飛ぶ数式を教えて下さい!

  • EXCEL 数式について

    A列 B列 の合計が C列に出るような表を つくっていました。 C列には =A1+B1 という程度の数式を入れていました。 ここまでは普通の話なのですが。。。 毎回、A B列の数字を入れたら C列の数式を コピーして下段に貼付けしていました。 今日も同じようにA B列に数字を入れたところ・・・ 勝手にC列に式が入りました。 特に、シートに保護をかけて数式を表示しない ようにしているわけでもなく、不思議です。 何が原因かおわかりになる方教えてください。 これが使えればそれはそれで便利なので・・・

  • エクセルで数式をコピーするとき

    Sheet1に入力したものが、Sheet2の指定したセルに自動的に入るようにしたいのですが、量が多いため、入れた数式をコピーするときにわからないことがあります。 Sheet1の、 A3、B3、C3、D3・・・に入力した数字を Sheet2の、 B2、B3、C2、C3・・・に勝手に入ってほしいのです。 Sheet2のB2に、=Sheet1!A3 Sheet2のB3に、=Sheet1!B3 と数式を入れれば反映されるのはわかります。 でも、数式を一つずつ入れていくのはとても大変なので、コピーペーストしたいのですが、 Sheet2のB4には、Sheet1のA4の数字をいれたいのに、エクセル側のかしこい機能なのか、 Sheet1のA5となってしまいますよね。 上記のような規則性で何百行も作っていかないといけないので、どうしたものかと思って困っております。 とても説明が下手でわかりにくいと思いますが、伝わりますでしょうか? 画像を添付しているので、このような形式で左のデータを右のような形式のものに反映させたいです。 やり方を教えて頂けるとても助かります。 宜しくお願いします。

  • Excel数式について

    Excel数式について Excel2003を使用しております。 sheet1からsheet4のA列からC列に1~100までの数字を入力しております。 sheet5のA1~A100にそれぞれの数字をカウントしたものを返したいのですが、 適した数式をご教示いただきたくよろしくお願い致します。

  • 《エクセル》配列数式について教えて下さい

    いつもお世話になります。 先日、このページで質問した時、配列数式について教えていただいて、例をもとに自分で作成しようとしたのですが、うまくいきません。 集計表A列とB列に項目行があり、別のファイル[Book1.xls]のSheet1にあるデータを羅列した表のA列とB列にある項目の2つのセルの内容に合致するデータ数をカウントする場合 =COUNTA(IF('[BOOK1.xls]Sheet1'!$A$2:$A$2000=$A1*'[BOOK1.xls]Sheet1'!$B$2:$B$2000=$B1)) と入力して、Shift+Ctrl+Enterキーを打ったのですが、「入力した数式にはエラーがあります」のエラーメッセージが出てきて、ヘルプを読んでみても解決方法がわかりませんでした。 お手数ですが、ご教授宜しくお願い致します。

  • Excel数式について

    Excel数式について Excel2010を使用しております。 sheet1からsheet10のA列からC列に1~400までの数字(コード)をランダムに入力しております。 中には欠番もあるので、入力される数字(コード)は全部で「97」になります。 sheet11のA1~A97にそれぞれの数字(コード)をカウントしたものを返したいのですが、 適した数式をご教示いただきたくよろしくお願い致します。

  • 再度、Excelの数式について、今朝

    再度、Excelの数式について、今朝 今朝、KURUMITO様から、下記1)~3)の条件での数式を親切に教えて頂きました。 教えて頂いた数式 =SUMPRODUCT(A4:A55,B4:B55)/H2 その後、条件が1)2)は同じですが、4)が増えたため3)が5)に変更になりました。 自分なりに次のように作ったのですが、エラーになります。=SUMPRODUCT(C4:C55="S")*(A4:A55,B4:B55)/H2 正しい数式を教えてください。バージョンは Excel2003 です、 宜しくお願いいたします。 1)A列 A4からA55まで、数字のデータが入ってるセルと、入ってないセルがあります。 2)B列もA列同様、B4からB55まで、数字のデータが入ってるセルと、入ってないセルがあります。(データの入ってる行は、A列で入っていれば、B列の同じ行に入っています)、 3)A列とB列のデータの入っている行を順番に4から55行まで、掛け算をして(例えば、A5*B5)、その4から55行まで合計を、H2に入っている、ほかの合計の数値で、割り算をする計算式をK2のセルに、一つにまとめて入れ、計算結果を表示したいのです。 4)C列もA列B列同様、C4からC55まで、B又はSの”文字のデータ”が入ってるセルと、入ってないセルがあります。(データの入ってる行は、C列(文字データ)で入っていれば、A列(数字データ)、B列(数字データ)の同じ行に入っています) 5)C列の”文字データ”がSならばA列とB列のデータの入っている行を順番に4から55行まで、掛け算をして(例えば、A5*B5)、その4から55行まで合計を、H2に入っている、ほかの合計の数値で、割り算をする計算式をK2のセルに、一つにまとめて入れ、計算結果を表示したいのです。

  • エクセルの数式の使い方について

    Excelデータの取りまとめ方についてご教授ください。 説明下手なので、何がしたいのか箇条書きします。 画像データも添付していますので、ご覧くだされば幸いです。 (1)1つのブックに各市のデータを各シート毎に入力してあり、そのデータを参照したとりまとめのシートを作りたい。 (2)列の項目は全市同じだが、行の項目や数がそれぞれの市で違う。 (3)実際は30行×100列くらいあるので、なるべく入力がコピペでできるか最低限の労力でやりたい。 (4)たとえば甲市の”A・X”の値をSheet4の”A・甲市”に表示したいときは、 「Sheet1の行項目のなかに、Sheet4の行項目と同じ"A"があれば、Sheet1の"A・X"の値を入力、なければ0」 のような数式を使えばいいのかと思ったが、このような数式があるのだろうか? 経緯として、これまで各市のデータをそれぞれ1ファイルずつで集めて、30ファイルのエクセルデータにひとつひとつ手で入力していたのですが、 開いてはぽちぽち入力して閉じて、開いてはぽちぽち入力して閉じて…の繰り返しで毎回頭が発狂しそうでした。 エクセルなんだからもっと手間を省く方法があるのではないかと、1つのブックにシートごとにとりまとめてみたまではよかったのですが、 何しろ初心者なもので、IFやVLOOKUP、フィルターなどを調べて使ってみてもうまくいかず…。 複数ブック×複数ブックを1つのブックで集計するというのが無謀な挑戦なのかもしれませんが、 少しでも手間を省くような方法がありましたら教えていただけると幸いです。

  • エクセルの数式について

    A列      B列    C列  1234    1204   1234  1203    1205   1203 1204    1234   1204 1256    1256   1256 1205    1203   1205 … … … …     A列にある。元の数字をランダムになってあるB列より検索しC列へA列と同じ並びで検出したいのですが、どの様な数式を適用すればよいのでしょうか? 教えて下さい。宜しくお願い致します。

専門家に質問してみよう