- 締切済み
エクセルの関数について
エクセルに下記のようなデータがあります。 ------------------------------ カテゴリ 数値 A 100 F 350 J 200 J 200 F 350 C 1000 ------------------------------ これを関数で重複しているものを取り除き、 別のセルに下記のように表示させたいのですが、 何かよい方法はございますでしょうか。 ------------------------------ カテゴリ 数値 A 100 F 350 J 200 C 1000 ------------------------------ お手数かけまして申し訳ございませんが、 どうぞよろしくお願いします。
- みんなの回答 (7)
- 専門家の回答
みんなの回答
- msMike
- ベストアンサー率20% (364/1804)
- mt2015
- ベストアンサー率49% (258/524)
ANo.2です > カテゴリと数値は対になっていまして、 > 「A」で「100」の場合は、必ず「A=100」になります。 > > 「A 100」を望みます! で、あればANo.2で、 F2セルに入れて下にコピーする式を↓にしてください =IFERROR(VLOOKUP(ROW(A1),A:C,3,FALSE),"")
お礼
その節はご回答いただきましてどうもありがとうございました。 参考にさせていただきます。 お礼の連絡が遅くなりまして大変申し訳ございませんでした。
- imogasi
- ベストアンサー率27% (4737/17069)
質問者のレベルでは、関数愛好者が多いようだが、下記の説明で、関数だと、どこがややこしいのか実感してみて。参考に勉強してもらう為の投稿です。 ーー 操作でおこないう ・ピボットテーブル ・データ」-フィルタオプションの設定ー重複するレコードは無視する が簡単なんだが、ほとんどの今までの質問者は、耳を貸さない。 ーー 似たような質問があって、その例を使うと データ例 A1:B8 A列 B烈 D列 E列 100 A-11 A-11 110 150 C-15 C-15 180 250 K-78 K-78 350 300 N-17 N-17 300 100 K-78 30 C-15 10 A-11 30 A-12 A-12 30 D列のD1セルの関数は =IF(COUNTIF($B$1:B1,B1)=1,B1,"") これで内容的には、重複のないデータがリストされた。E列はその係数合計を SUMIF関数で出したもの。 E1セルの関数は=IF(D1="","",SUMIF($B$1:B1000,D1,$A$1:$A$1000)) 問題は途中に空白行が混じることだ。 これを省くのが、関数ではむつかしい。1発ではむつかしい。 作業列を余分に1列使って、上行からの連番を振っても良いなら、やや考えやすくなる。連番に基づいて、持って行く行を決めればよいから。 作業列が嫌なら、仕方なく http://office-qa.com/Excel/ex257.htm 方法3 などの、配列数式を使う案が提案される。配列数式など、質問者は、聞いたことあるかな。
お礼
imogasiさま、どうもありがとうございます。 エクセルは好きですが、ピポットと聞いただけで拒絶反応が、、、 今回imogasiさまの他にもピポットを勧めれており、少し勉強をしてみようかと。 配列数式もわかりません。。。 ちょっとこちらも勉強してみます。 本当にどうもありがとうございます。
- mt2015
- ベストアンサー率49% (258/524)
ANo.2です。 「重複している物を除く」と言う条件を見落としていました。 この重複はカテゴリに関してですか?カテゴリ+数値ですか? 具体的に言うと、 A 100 A 200 と、言うデータが有った場合、望んでいる答えは、「A 100」「A 300」どちらでしょう?
お礼
その節はご回答いただきましてどうもありがとうございました。 参考にさせていただきます。 お礼の連絡が遅くなりまして大変申し訳ございませんでした。
補足
皆さま説明不足でごめんなさい、 カテゴリと数値は対になっていまして、 「A」で「100」の場合は、必ず「A=100」になります。 「A 100」を望みます! どうぞよろしくお願いします。
- 山田 太郎(@f_a_007)
- ベストアンサー率20% (955/4574)
Q、何かよい方法はございますでしょうか? A、SQL文を発行する。 https://kaya-soft.com/sqlserver2008-toranomaki/beginner/groupby/ >Select F2, Sum(F1) FROM [Sheet8$A1:B6] Group By F2 Order by f2 このSQL文の戻り値は、添付図のようです。後は、これを行単位と列単位で抜き出せば目的を達成できます。SUMIF関数では、これは無理だと思います。ですから、ピボットテーブルという手を使うしかないと思います。ただ、式一発で目的を達成しようとすれば、SQL文を発行して結果を得る関数を利用するしかないのでは。と、思います。まあ、Excel は操作したこともないド素人の考え。もしかしたら、可能かも知れません。が、相当に複雑怪奇な式になると思います。で、仮に、SQLという手法でもよければ、DSelect()を紹介します。
お礼
その節はご回答いただきましてどうもありがとうございました。 参考にさせていただきます。 お礼の連絡が遅くなりまして大変申し訳ございませんでした。
- mt2015
- ベストアンサー率49% (258/524)
ピボットテーブルを使えばすぐですが、どうしても関数と言うなら…… 添付の図では、A2セルに↓の式を入れて下にコピー =IF(AND(COUNTIF(B$1:B2,B2)=1,B2<>""),MAX(A$1:A1)+1,"") E2セルに↓の式を入れて下にコピー =IFERROR(VLOOKUP(ROW(A1),A:C,2,FALSE),"") F2セルに↓の式を入れて下にコピー =IF(E2<>"",SUMIF(B:B,E2,C:C),"") こんな感じで如何でしょう
お礼
その節はご回答いただきましてどうもありがとうございました。 参考にさせていただきます。 お礼の連絡が遅くなりまして大変申し訳ございませんでした。
- aokii
- ベストアンサー率23% (5210/22062)
ピボットテーブルを使ってみてください。
お礼
その節はご回答いただきましてどうもありがとうございました。 参考にさせていただきます。 お礼の連絡が遅くなりまして大変申し訳ございませんでした。
お礼
どうもありがとうございます! できます! 一点、お手数で申し訳ございませんが、 シートを分けない方法もありますでしょうか。 見よう見まねでやっていますが同じシートではうまくいかず、 できましたら教えてください。 どうぞよろしくお願いします。