• 締切済み

エクセルの関数について

エクセルに下記のようなデータがあります。 ------------------------------ カテゴリ 数値 A 100 F 350 J 200 J 200 F 350 C 1000 ------------------------------ これを関数で重複しているものを取り除き、 別のセルに下記のように表示させたいのですが、 何かよい方法はございますでしょうか。 ------------------------------ カテゴリ 数値 A 100 F 350 J 200 C 1000 ------------------------------ お手数かけまして申し訳ございませんが、 どうぞよろしくお願いします。

みんなの回答

  • msMike
  • ベストアンサー率20% (364/1804)
回答No.7

添付図参照 Sheet2 において、 式 =IF(COUNTIF(Sheet1!A$2:A2,Sheet1!A2)=1,ROW()) を入力したセル D2 を下方にズズーッと(8行目まで)オートフィル 式 =IFERROR(INDEX(Sheet1!A$1:A$7,SMALL(D$2:D$8,ROW(A1))),"") を入力したセル A2 を下方にズズーッと(8行目まで)オートフィル

tanaka8878
質問者

お礼

どうもありがとうございます! できます! 一点、お手数で申し訳ございませんが、 シートを分けない方法もありますでしょうか。 見よう見まねでやっていますが同じシートではうまくいかず、 できましたら教えてください。 どうぞよろしくお願いします。

  • mt2015
  • ベストアンサー率49% (258/524)
回答No.6

ANo.2です > カテゴリと数値は対になっていまして、 > 「A」で「100」の場合は、必ず「A=100」になります。 > > 「A 100」を望みます! で、あればANo.2で、 F2セルに入れて下にコピーする式を↓にしてください =IFERROR(VLOOKUP(ROW(A1),A:C,3,FALSE),"")

tanaka8878
質問者

お礼

その節はご回答いただきましてどうもありがとうございました。 参考にさせていただきます。 お礼の連絡が遅くなりまして大変申し訳ございませんでした。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.5

質問者のレベルでは、関数愛好者が多いようだが、下記の説明で、関数だと、どこがややこしいのか実感してみて。参考に勉強してもらう為の投稿です。 ーー 操作でおこないう ・ピボットテーブル ・データ」-フィルタオプションの設定ー重複するレコードは無視する が簡単なんだが、ほとんどの今までの質問者は、耳を貸さない。 ーー 似たような質問があって、その例を使うと データ例 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 などの、配列数式を使う案が提案される。配列数式など、質問者は、聞いたことあるかな。

tanaka8878
質問者

お礼

imogasiさま、どうもありがとうございます。 エクセルは好きですが、ピポットと聞いただけで拒絶反応が、、、 今回imogasiさまの他にもピポットを勧めれており、少し勉強をしてみようかと。 配列数式もわかりません。。。 ちょっとこちらも勉強してみます。 本当にどうもありがとうございます。

  • mt2015
  • ベストアンサー率49% (258/524)
回答No.4

ANo.2です。 「重複している物を除く」と言う条件を見落としていました。 この重複はカテゴリに関してですか?カテゴリ+数値ですか? 具体的に言うと、 A 100 A 200 と、言うデータが有った場合、望んでいる答えは、「A 100」「A 300」どちらでしょう?

tanaka8878
質問者

お礼

その節はご回答いただきましてどうもありがとうございました。 参考にさせていただきます。 お礼の連絡が遅くなりまして大変申し訳ございませんでした。

tanaka8878
質問者

補足

皆さま説明不足でごめんなさい、 カテゴリと数値は対になっていまして、 「A」で「100」の場合は、必ず「A=100」になります。 「A 100」を望みます! どうぞよろしくお願いします。

回答No.3

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()を紹介します。  

tanaka8878
質問者

お礼

その節はご回答いただきましてどうもありがとうございました。 参考にさせていただきます。 お礼の連絡が遅くなりまして大変申し訳ございませんでした。

  • mt2015
  • ベストアンサー率49% (258/524)
回答No.2

ピボットテーブルを使えばすぐですが、どうしても関数と言うなら…… 添付の図では、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),"") こんな感じで如何でしょう

tanaka8878
質問者

お礼

その節はご回答いただきましてどうもありがとうございました。 参考にさせていただきます。 お礼の連絡が遅くなりまして大変申し訳ございませんでした。

  • aokii
  • ベストアンサー率23% (5210/22062)
回答No.1

ピボットテーブルを使ってみてください。

tanaka8878
質問者

お礼

その節はご回答いただきましてどうもありがとうございました。 参考にさせていただきます。 お礼の連絡が遅くなりまして大変申し訳ございませんでした。

関連するQ&A