- 締切済み
条件にあう行列の値を出力したいのですが。
たとえば 2~32行目にそれぞれ48列のデータがありその値が 1800以上ならばその同列の一行目の値を出力するというような プログラムをつくりたいのですが、 どのようにすればいいのでしょうか? 宜しくお願いいたします。
- みんなの回答 (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列へコピーすると正しく表示されません。
#2です。 いちいち計算式を変えるのが面倒なら、 =IF(MAX(INDEX($A$2:$AV$23,0,ROW()))>1800,INDEX($A$1:$AV$1,1,ROW()),"") をAY1に記入し、下へコピーすればOKです。
なにも、プログラムを書かなくても、 AY1には、 =IF(MAX(A2:A32)>=1800,A1."") として AY2には =IF(MAX(B2:B32)>=1800,B1."") と、A、B、C...と式を変えていけば良いのでは?
- chibita_papa
- ベストアンサー率60% (127/209)
これでは、答えようがありません。 開発言語は、 1800以上のデータはどこにありますか。 EXCEL Or Access Or SQLServer ・・・ 何処に出力しますか。
お礼
返信いただきありがとうございます。 AYの列に出力させたいです。
補足
すいません。 EXCELです。 そして条件に合うデータを縦に一列に出力させていきたいと思っています。
お礼
ありがとうございました。 値が出力されたのですが、 たくさんの空欄や#REF! が出てしまいます。 コピーして張り付ける領域の行数は参照するデータ範囲ぶんコピーすればよろしいのでしょうか?