[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『現在、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.