- 締切済み
2つの条件に完全合致するデータ件数の出し方 (Excel)
下記【↓データ元】ようにカンマ区切りされているデータがあり、任意の2つの条件に合致するデータ数をマトリクス表形式で埋め込みたいと考えています。 完全一致するデータのみカウント対象とするので(ex.CCC(株)等、条件文字に追加文字があるようなものは除く)、splitで配列に入れてfindで一つ一つ検索していくしかないでしょうか? (データ数が多いと、処理時間がとてもかかるので・・・。) 私が行いたいと思っていた解決策に直結するような下記サイトがあったのですが、これだと条件文字が含んでいればカウント対象(ex.CCC(株)等、条件文字に追加文字があるものも対象)となってしまうので、ご助言いただきたく書き込みしました。 何かアドバイスがありましたら、宜しくお願いいたします。 【↓参考になりそうだと思われたサイト】 http://ohpa.net/modules/xlnote/content0166.html 【↓データ元】 AAA BBB,CCC DDD CCC,AAA AAA,CCC BBB 【↓出力イメージ】 AAA BBB CCC DDD AAA 1 0 2 0 BBB 0 1 1 0 CCC 2 1 0 0 DDD 1 0 0 0
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- imogasi
- ベストアンサー率27% (4737/17069)
時どきこういう質問で、私は思うのだが、エクセルの課題として考えるのでしょう。 であるのに、質問に前身のCSVファイルらしい「データ元」を書く必要があるのか。 エクセルに読み込ませた後の話しで質問すべきです。質問は簡潔に。 ーー >splitで配列に入れてfindで一つ一つ検索していくしかないでしょうか? VBAでやればそんなに処理時間がかかるとは考えられない。 >データ数が多いと、処理時間がとてもかかるので・・・。) データ数のオーダーはどれくらいですか。気になることは書いてない。 ーーー また結果表が2次元なので、元データはエクセルでA,B列限りか。 C列はないとしてよいか。こういう大切なことが書いてない。 ーーー またAAA-BBBと、BBB-AAAは非可逆で考えるようだな。 これも注記が必要ではないか。 ーー 関数でやるなら 参考サイトにもあるSUMPRODUCT関数で出来るのでは。 例データ A1:B6 AAA BBB CCC DDD CCC AAA AAA CCC BBB ーーー 結果表 A9:F13 ー ー AAA BBB CCC DDD AAA 1 0 0 1 0 BBB 1 0 0 1 0 CCC 0 1 0 0 0 DDD 1 0 0 0 0 ミソであり、欠点?でもあるかも知れたいがB9が空白の 列を設けたこと。 こうしないと関数では、手がつけられないのでは。 後続回答者がこれをやらない回答が出るか楽しみ。 C列にB列が空白ならA列を持ってくる、作業列を作り、A,C列で 下記の式(を少し書き換えた式)でやる方法もあると思う。 B10は =SUMPRODUCT(($A$1:$A$8=A10)*($B$1:$B$8=""))*1 と入れてB13まで式の複写。 C10には =SUMPRODUCT(($A$1:$A$8=$A10)*($B$1:$B$8=C$9)*1) と入れて縦方向そして横方向式を複写。 ーー 結果 上表のとおり。 ーーー こんなのVBA向きの問題だ。 また既回答のようにピボットを使えないか考える方が良いと思う。
- osamuy
- ベストアンサー率42% (1231/2878)
例えば、データ元を以下のように整形して、ピボットテーブルでクロス集計するとか。 AAA,AAA BBB,CCC DDD,DDD CCC,AAA AAA,CCC BBB,BBB
- 参考URL:
- http://www.google.com/search?q=excel+%E3%83%94%E3%83%9C%E3%83%83%E3%83%88&ie=utf8&oe=utf8&lr=lang_ja
お礼
書き込みありがとうございます。 確かにクロス集計なので、ピボットテーブルが使えないか考えたのですが、カンマ区切りされているデータが2つとは限らない為、ピボットテーブルだと無理そうだったんです。
お礼
質問の書き方が言葉足らずで申し訳ありませんでした。 たくさんの書き込みありがとうございます。