こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

-広告-

解決済みの質問

エクセル 関数で解決できる?

以下のようなデータがあります。str1 (or 2, 3) は文字列で*はワイルドカードです。

*str1* *str2* *str3* *str1* *str2* *str3* *str1* *str2* *str3* *str1* ・・・
0.303 NaN1.271 0.507 NaN 0 2.662 0.53 0.956 1.772 ・・・
0.454 1.126 1.766 0.386 0.234 0.309 NaN 1.028 0.371 0.235 ・・・
0.27 NaN NaN 0.612 NaN 0.255 2.006 0.395 0.437 0.269 ・・・

ほしいデータは、各行ごとに、隣接するstr1~str3を1区切りとして、str1~3それぞれを最小値とする組がいくつあるかということです。
つまり上記の例だと一行目では、最初の 0.303 NaN1.271 では 0.303 が最小なので*str1*にカウント1が入り、次の組み合わせ 0.507 NaN 0 では 0 が最小なので *str3* にカウント1、次では 2.662 0.53 0.956 の組み合わせなので、*str2* にカウント1。ここまでで 全て1ずつカウントされることになります。
このようにstr1~3のどこに最小値がくるかを数えるには、関数だけでは厳しいでしょうか?

投稿日時 - 2016-01-24 01:48:01

QNo.9116169

すぐに回答ほしいです

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

>str1 (or 2, 3) は文字列で*はワイルドカードです。
フィールド名と考えて良いのでしょうか?
要するに3列単位に処理すれば良いと言うことですよね?

>このようにstr1~3のどこに最小値がくるかを数えるには、関数だけでは厳しいでしょうか?
関数だけで処理するには作業用のテーブルが必要になります。
提示された模擬データに行を追加して検証してみましたが貼付画像のように作業用テーブルを使えば目的に合うようなカウントができました。
M2=MIN(OFFSET($A$1,ROW()-1,MOD((COLUMN(A1)-1),3)*3,1,3))
M2セルを右と下へO11セルまでコピーしました。
作業用としてのM2:O11は各組の最小値を求めたテーブルです。
A13=SUMPRODUCT((A$2:A$11=INDEX($M$2:$O$11,0,INT((COLUMN()-1)/3)+1))*1)
A13セルを右へI13セルまでコピーしました。
チェックし易いようにカウント対象の元データに条件付き書式で色付けしてあります。

投稿日時 - 2016-01-24 14:55:44

お礼

ご丁寧に画像まで・・・!
やはり作業用をつくらないと無理なんですね。
ありがとうございました!

投稿日時 - 2016-01-24 18:40:18

ANo.2

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

-広告-
-広告-

回答(2)

ANo.1

=SUM(COUNTIF(A2,MIN($A$2:$C$2)),COUNTIF(A3,MIN($A$3:$C$3)),COUNTIF(A4,MIN($A$4:$C$4)))

表の縦横を入れ替えたほうがいいような気がしますが、いったんstr1~str3の1ブロックを集計する場合、上記の関数でどうでしょうか。

投稿日時 - 2016-01-24 02:57:48

-広告-
-広告-

あなたにオススメの質問

-広告-
-広告-