- ベストアンサー
エクセルの関数にヒントを教えてください
次のような文字列をif関数で文字列で示したいのですが、 条件が多すぎて長くなってしまいなかなかうまくゆきません。 A列に記述してある「01:00文字列」(全角)「01:00」(半角)のどちらであっても上2桁の「01」と表示したい(find「:」「:」で判定した) それ以外の記述(「:」「:」がない)のときはA列にある文字列をそのまま表示(ISERRを使ってみた) A列が空欄の場合は空白にする 結果表示はC列 うまくすっきりできる方法があったらご教示ください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
ご相談でヤリタイ事が変わって二度手間です。 ちょっと変わったというなら、ちょっと応用するだけです。 C2: =IF(A2="","",IF(ISNUMBER(A2),TEXT(A2,"hh"),IF(ASC(MID(A2,3,1))=":",ASC(LEFT(A2,2)),C1))) とか。
その他の回答 (2)
- keithin
- ベストアンサー率66% (5278/7941)
やりたいこと: 1)3文字目に:か:があったら左2文字 2)そうでないときはA1そのまま 3)空白のときは空白 ちなみに >「01:00文字列」(全角)「01:00」(半角)のどちらであっても上2桁の「01」と表示したい 全角と半角のどちらがあっても、最初の2ケタを「半角で」表示したいということでしょうか。 それとも全角は全角のまま表示でしょうか? 計算例: C1に =IF(ASC(MID(A1,3,1))=":",ASC(LEFT(A1,2)),A1&"") 以下コピー ご自分でもいじくって(勉強してみて)、適宜応用してみてください。
お礼
ありがとうございました。 前提をちょっと間違えてしまいました。 全角の「01:00文字列」はすべて文字列なのですが、 半角の方(1:00)は時間表示になっていました。(したがって上2桁とは限らない) このどちらも半角の文字列(時間表示=01)にする必要がありました。 なお「そうでないとき」の表示は直前のC列ということにするため =IF(ASC(MID(A2,3,1))=":",ASC(LEFT(A2,2)),A2&"") の「A2&""」は「C1&""」になおしました。
- emaxemax
- ベストアンサー率35% (44/124)
find「:」「:」で判定するということは、:の前が常に2文字とはかぎらないのですね? :の前の文字列だけを表示したいのですね? なら、 =IF(A1="","",IF(ISERROR(FIND(":",ASC(A1))),A1,ASC(LEFT(A1,FIND(":",ASC(A1))-1)))) でどうでしょう?
お礼
ありがとうございました。 2の方にも記述しましたが質問の前提が間違っていました。 半角の数字は時間表示になっていました。(1:00や13:00) したがって半角は文字列でないので私のいうFINDだとだめですね。 どちらの表示も文字列の時間表示にしたかったのです。
お礼
お手間をおかけしました。 おかげさまでうまくできました。 私の作った関数では文字数が171文字にもなってしまったのですが、こんなに簡単になるのですね。仕組みをじっくりと勉強してみたいと思います ありがとうございました。