[[20100621141336]] 『現在、IF分を複数もつ式を書いてます。』(かず) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『現在、IF分を複数もつ式を書いてます。』(かず)

=IF(IF((SUBSTITUTE(MID(CELL("filename",$A$1),FIND("]",CELL("filename",$A$1))+1,31),"月","")-1)=3,"",SUBSTITUTE(MID(CELL("filename",$A$1),FIND("]",CELL("filename",$A$1))+1,31),"月","")-1),
IF((SUBSTITUTE(MID(CELL("filename",$A$1),FIND("]",CELL("filename",$A$1))+1,31),"月",""))=1,12,SUBSTITUTE(MID(CELL("filename",$A$1),FIND("]",CELL("filename",$A$1))+1,31),"月","")-1))

やってる内容は、エクセルに4月〜3月のシート名(12シート)を用意し、特定のセルに前の月のシート名の月を求めるものです。
たとえば、5月のシートに上記式を埋め込むと、4と表示されます。
そして、この4を使って、前月のシートの値を参照してます。

必須条件
作成後このファイルを使うのは私ではないので、プログラムは書きたくないです。
関数は、全部のシート共通にしたいです。

=IF(
//このシート名の月を拾って1を引いたら3になる場合は、空白、そうでなければシート名の1引いた値をセルに表示します。
IF((SUBSTITUTE(MID(CELL("filename",$A$1),FIND("]",CELL("filename",$A$1))+1,31),"月","")-1)=3,"",SUBSTITUTE(MID(CELL("filename",$A$1),FIND("]",CELL("filename",$A$1))+1,31),"月","")-1),

//このシート名の月を拾って1になる場合は、12、そうでなければシート名の1引いた値をセルに表示します。
IF((SUBSTITUTE(MID(CELL("filename",$A$1),FIND("]",CELL("filename",$A$1))+1,31),"月",""))=1,12,SUBSTITUTE(MID(CELL("filename",$A$1),FIND("]",CELL("filename",$A$1))+1,31),"月","")-1)

)

とても長くて見難いのですが、これの期待値が
4月シート  空白
5月シート  4月
12月シート 1月
です。
現状 FALSE となります。

= IF((SUBSTITUTE(MID(CELL("filename",$A$1),FIND("]",CELL("filename",$A$1))+1,31),"月","") -1)=3,"",SUBSTITUTE(MID(CELL("filename",$A$1),FIND("]",CELL("filename",$A$1))+1,31),"月","") -1)
これだと、期待値になるのですが、12月の際にバグります。

改善方法があれば教えて下さい。


 作業セルを使えば分かり易くなると思います。

 例えば、Z1 =MID(CELL("filename",$A$1),FIND("]",CELL("filename",$A$1))+1,31) とすれば、
 Z1セルには、そのシート名が表示されます。
 その時、前月は、=TEXT(("2010年"&Z1&"1日")-1,"m月") で表示出来ます。
 
(純丸)(o^-')b

ありがとうございました。
解決できました!


消したらだめです

下に書き加えましょう


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.