• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:条件により表示文字数を変えたい)

天気情報の表示方法について

このQ&Aのポイント
  • 条件により表示文字数を変える方法について質問です。
  • 現在、気象庁から取得した天気情報を使って一覧を作成していますが、2文字以上の天気の場合(「晴後曇」など)晴のみの表示にしたいです。
  • 現在、快晴が快、晴後曇は晴、大雨・快晴などは最初の1文字になっています。midの部分を2にすると快晴は快晴、晴後曇が晴後、大雨などは大雨になります。どのようにすればよいでしょうか。

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

  • ベストアンサー
  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.11

 前提条件を確認させて下さい。 >現在、1シートに複数月を表示しています(A6からU120程度までの範囲(約3ヶ月)) >VBAによる複数月の取得範囲が2014/12/1~2015/3/1ですと2015/1/1はA44に。1~3月ですとA7にきます。  Sheet7に複数月が表示される場合、少なくとも「『一番下に表示されている月』以外の月」は1日~月末までのデータが表示されるものと考えておけば宜しいのでしょうか?  つまり、例えば取得範囲が2014年12月~2015年3月の場合は、少なくとも2014/12/1~2015/2/28の範囲のデータは必ず全て表示されていて、例えば「2014年12月分が10日から始まっている」とか「2015年2月分が20日までしか表示されていない」という様な事は無いと考えておけば宜しいのでしょうか?  後、 >取得データは >A3に2015年1月(2015/1/1)括弧内は実際のセル内の値です。 >  A       T >5:日  ・・・ 天気 >6:1      晴 >7:2      雨 >8:3      薄曇 >というような形になっています。 という事から考えて、 >複数月の取得範囲が2014/12/1~2015/3/1ですと2015/1/1はA44に。 の場合も、「『2015年1月』と表示されているセル」の3つ下のセルに2015/1/1の日付である事を示す数値の1が表示されていて、その「2015/1/1の日付である事を示す数値の1が表示されているセル」と同じ行のT列に「2015/1/1の天気のデータ」が入力されているものと考えておけば宜しいのでしょうか?  もし上記の前提条件の確認事項が全てyesである場合には、Sheet1のA8セルに入力する関数を次の様なものにされると良いと思います。 =IF(ISNUMBER(1/(YEAR(AA7)>1871)),IF(ISERROR(1/(VLOOKUP(DAY(AA7),OFFSET(INDEX(Sheet7!$A:$A,MATCH(EOMONTH(AA7,-1)+1,Sheet7!$A:$A,0)),1,,DAY(EOMONTH(AA7,0))+2,21),20,FALSE)<>"")),"",LEFT(VLOOKUP(DAY(AA7),OFFSET(INDEX(Sheet7!$A:$A,MATCH(EOMONTH(AA7,-1)+1,Sheet7!$A:$A,0)),1,,33,21),20,FALSE),FIND("後",SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(VLOOKUP(DAY(AA7),OFFSET(INDEX(Sheet7!$A:$A,MATCH(EOMONTH(AA7,-1)+1,Sheet7!$A:$A,0)),1,,33,21),20,FALSE),"時々","後"),"一時","後"),"、","後")&"後")-1)),"")

quindecillion
質問者

お礼

ここまでおつきあい頂き、本当にありがとうございます。

quindecillion
質問者

補足

全てYesですので、ご呈示頂いた関数を使用させていただくと月が変わっても範囲をきりかえることなく表示できました。 現状、どうなっているのか理解が難しいので、徐々に読み解いて行きたいと思います。 ただ、12月から3月までを表示したときに、なぜか12/31だけが空白になってしまいます。取得範囲を11~2、12~3など切り替えても同じ結果になります。 その1日だけなので、不思議なのです。

すると、全ての回答が全文表示されます。

その他の回答 (11)

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.1

晴、雨、曇、雪 などの天気を示す文字が一番最初に出てくる場所を探してそこまでの文字列を表示すれば良いのでは? こんな感じです。 =LEFT(A1,MIN(FIND("晴",A1&"晴"),FIND("雨",A1&"雨"),FIND("曇",A1&"曇"),FIND("雪",A1&"雪"))) A1&"晴"の様に検索対象の文字を最後に付けて検索しているのは、Find関数でエラーが返ってくるのを防止の為です。

quindecillion
質問者

お礼

御回答ありがとうございます。 Excelのバージョンの記載が抜かるという初歩的ミスをしましたが、2013でも関数のFINDは使えるのですね。 勉強になりました。 参考にさせて頂きます。

すると、全ての回答が全文表示されます。

関連するQ&A