- ベストアンサー
エクセルで経過時間を求める方法
- エクセルを使用して、特定の条件下での経過時間を求める方法について教えてください。
- 質問者は、A列に時間(秒)があり、B列からF列まで温度が記録されている場合に、20℃未満になったときの各列の経過時間を求めたいと述べています。
- 質問者はFIND関数を使用して試してみましたが、うまくいかなかったとのことです。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
お示しのデータがシート1のA列からF列の1行目から下方に入力されているとします。 お求めの表は同じシート内でも、別のシートでもよいでしょう。 お求めの表の形式を横方向に表示させるのでしたら次の式を例えば同じシートのJ1セルに入力して右横方向にドラッグコピーしたのちに下方向にもドラッグコピーします。 =IF(COLUMN(A1)>5,"",IF(ROW(A1)=1,Sheet1!B1,IF(ROW(A1)=2,INDEX(Sheet1!$A:$A,MATCH(20+0.1,Sheet1!B:B,-1)+1),""))) 縦方向にデータを表示させるのでしたら次の式を適当なセル、例えば同じシートのJ1セルに入力し右横方向にドラッグコピーしたのちに下方向にもドラッグコピーします。 =IF(OR(ROW(A1)>5,COLUMN(A1)>2),"",IF(COLUMN(A1)=1,INDEX(Sheet1!$B$1:$F$1,ROW(A1)),IF(COLUMN(A1)=2,INDEX(Sheet1!$A:$A,MATCH(20+0.1,INDEX(Sheet1!$B:$F,1,ROW(A1)):INDEX(Sheet1!$B:$F,1000,ROW(A1)),-1)+1))))
その他の回答 (3)
- keithin
- ベストアンサー率66% (5278/7941)
>作成済みのマクロ 一体何をどうしたいのか、まるでイミフメイです。 sub macro1() dim r as long, c as long, LastRow as long lastrow = cells(rows.count, 1).end(xlup).row for c = 2 to 6 for r = 1 to lastrow if cells(r, c) <> "" and cells(r, c) <= 20 then cells(r, c).select msgbox cells(r, 1).value & vblf & cells(r, c).value exit for end if next r next c end sub
お礼
御礼遅くなりました。回答有難うございました。
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! 一例です。 ↓の画像の配置だと、B1セルに =IF(COUNTIF(B2:B10,"<=20"),INDEX($A2:$A10,MIN(IF(B2:B10<=20,ROW(A1:A9)))),"") これは配列数式になってしまいますので、Shift+Ctrl+Enterで確定! この画面からコピー&ペーストする場合は B1セルを選択 → 数式バー内に貼り付け → そのまま(編集可能のまま)Shift+Ctrlキーを押しながらEnterキーで確定! 数式の前後に{ }マークが入り配列数式になります。 これを列方向にオートフィルでコピーすると画像のような感じになります。 ※ 注意点として 数式内の >ROW(A1:A9) の部分はINDEX関数で範囲指定した行数に必ず1行目から合わせます。m(_ _)m
お礼
ご回答有難うございます。作成済みのマクロに追加してみて上手くいきませんでした。助かりました。
- keithin
- ベストアンサー率66% (5278/7941)
ごく安直に。 添付図: B1に =IF(MIN(B2:B10)>20,"NA",INDEX($A:$A,MIN(IF(B2:B10<=20,ROW(B2:B10))))) と記入、必ずコントロールキーとシフトキーを押しながらEnterで入力、右にコピー。 ところで >FINDを使ってみた マクロでも使って調べたかったのですか?(どこに)どういう具合に結果を示したいのかも、ご相談に書き忘れてますけど。 マクロでも全く同様に、特に策を弄するまでも無く上から順に調べて20以下になったところで結果を示すのでも、十分です。
お礼
ご回答有難うございます。作成済みのマクロに追加してみて上手くいきませんでした。助かりました。
お礼
御礼遅くなりました。回答有難うございました。社内のいろいろな要望がありますので、参考させていただきます。