• 締切済み

条件にあう行列の値を出力したいのですが。

たとえば 2~32行目にそれぞれ48列のデータがありその値が 1800以上ならばその同列の一行目の値を出力するというような プログラムをつくりたいのですが、 どのようにすればいいのでしょうか? 宜しくお願いいたします。

みんなの回答

noname#79209
noname#79209
回答No.4

#2です。 > たくさんの空欄や 空欄がでるのは、「列内に1800以上の値がない」からです。 1800以上が「あるものだけ」というご希望なら、数式の作り方がガラッと変わってしまいます。 > #REF!が出てしまいます。 A列は表題なのでは?そうならそうと書いていただかないと... データはB列からAW列の48列分あるのですね? 以下はB列からAW列にデータがあるとして書いています。 24行目に追加して良いなら、追加したB24に、 =MAX((B$2:B$23>=1800)*COLUMN(B$2:B$23) と入力し、 「SHIFT」と「CTRL」を押したまま「ENTER」を押します。 B24の内容が {=MAX((B$2:B$23>=1800)*COLUMN(B$2:B$23)} と中括弧「{」と「}」でくくられていればOKです。 これを、C24からAW24へコピーします。 AY1に =IF(ISERROR(SMALL($B$24:$AW$24,ROW()+1)),"",INDEX($A$1:$AW$1,1,SMALL($B$24:$AW$24,ROW()+1))) と入力して、下へコピーしてください。 コピーは必ずAY列にコピーしてください。 「縦に長くなり過ぎる」などでと言ってAX列へコピーすると正しく表示されません。

noname#79209
noname#79209
回答No.3

#2です。 いちいち計算式を変えるのが面倒なら、 =IF(MAX(INDEX($A$2:$AV$23,0,ROW()))>1800,INDEX($A$1:$AV$1,1,ROW()),"") をAY1に記入し、下へコピーすればOKです。

simaotoko
質問者

お礼

ありがとうございました。 値が出力されたのですが、 たくさんの空欄や#REF! が出てしまいます。 コピーして張り付ける領域の行数は参照するデータ範囲ぶんコピーすればよろしいのでしょうか?

noname#79209
noname#79209
回答No.2

なにも、プログラムを書かなくても、 AY1には、 =IF(MAX(A2:A32)>=1800,A1."") として AY2には =IF(MAX(B2:B32)>=1800,B1."") と、A、B、C...と式を変えていけば良いのでは?

回答No.1

これでは、答えようがありません。 開発言語は、 1800以上のデータはどこにありますか。 EXCEL Or Access Or SQLServer ・・・ 何処に出力しますか。

simaotoko
質問者

お礼

返信いただきありがとうございます。 AYの列に出力させたいです。

simaotoko
質問者

補足

すいません。 EXCELです。 そして条件に合うデータを縦に一列に出力させていきたいと思っています。

関連するQ&A