アプリ版:「スタンプのみでお礼する」機能のリリースについて

下記【↓データ元】ようにカンマ区切りされているデータがあり、任意の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

A 回答 (2件)

時どきこういう質問で、私は思うのだが、エクセルの課題として考えるのでしょう。


であるのに、質問に前身のCSVファイルらしい「データ元」を書く必要があるのか。
エクセルに読み込ませた後の話しで質問すべきです。質問は簡潔に。
ーー
>splitで配列に入れてfindで一つ一つ検索していくしかないでしょうか?
VBAでやればそんなに処理時間がかかるとは考えられない。
>データ数が多いと、処理時間がとてもかかるので・・・。)
データ数のオーダーはどれくらいですか。気になることは書いてない。
ーーー
また結果表が2次元なので、元データはエクセルでA,B列限りか。
C列はないとしてよいか。こういう大切なことが書いてない。
ーーー
またAAA-BBBと、BBB-AAAは非可逆で考えるようだな。
これも注記が必要ではないか。
ーー
関数でやるなら
参考サイトにもあるSUMPRODUCT関数で出来るのでは。
例データ
A1:B6
AAA
BBBCCC
DDD
CCCAAA
AAACCC
BBB
ーーー
結果表
A9:F13
ーーAAABBBCCCDDD
AAA10010
BBB10010
CCC01000
DDD10000
ミソであり、欠点?でもあるかも知れたいが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向きの問題だ。
また既回答のようにピボットを使えないか考える方が良いと思う。
    • good
    • 0
この回答へのお礼

質問の書き方が言葉足らずで申し訳ありませんでした。
たくさんの書き込みありがとうございます。

お礼日時:2008/04/14 01:08

例えば、データ元を以下のように整形して、ピボットテーブルでクロス集計するとか。



AAA,AAA
BBB,CCC
DDD,DDD
CCC,AAA
AAA,CCC
BBB,BBB

参考URL:http://www.google.com/search?q=excel+%E3%83%94%E …
    • good
    • 0
この回答へのお礼

書き込みありがとうございます。
確かにクロス集計なので、ピボットテーブルが使えないか考えたのですが、カンマ区切りされているデータが2つとは限らない為、ピボットテーブルだと無理そうだったんです。

お礼日時:2008/04/14 01:11

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!