Excel の「条件付き書式」「データの入力規則」に指定できる数式について
#1
=IF(INDIRECT(ADDRESS(ROW(),COLUMN(),1,1),TRUE)<10,TRUE,FALSE)
端的に結果だけ述べると、「条件付き書式」「データの入力規則」の数式に上記の式を設定しても機能しなかった。
#1.2
=IF(INDIRECT(ADDRESS(1,1,1,1),TRUE)<10,TRUE,FALSE)
これはおーけー。
#1.2
=INDIRECT(ADDRESS(ROW(),COLUMN(),1,1),TRUE)<10
これもおーけー。
#2
=IF(INDIRECT(CHAR(64+COLUMN())&ROW(),TRUE)<10,TRUE,FALSE)
これはダメだった。
#2.1
=INDIRECT(CHAR(64+COLUMN())&ROW(),TRUE)<10
これはおーけー。
ちなみに IF を AND や OR に置き換えても同様の事象が発生する。
だもんで、
#3.1
=OR( INDIRECT(ADDRESS(ROW(),COLUMN(),1,1),TRUE)=99 ,AND( INDIRECT(ADDRESS(ROW(),COLUMN(),1,1),TRUE)>=0 ,INDIRECT(ADDRESS(ROW(),COLUMN(),1,1),TRUE)<10 ,MOD(INDIRECT(ADDRESS(ROW(),COLUMN(),1,1),TRUE),1)=0 ) )
こういう式を入力規則に指定できなくてほとほと困っていた。
#3.2
=( (INDIRECT(ADDRESS(ROW(),COLUMN(),1,1),TRUE)=99) +( (INDIRECT(ADDRESS(ROW(),COLUMN(),1,1),TRUE)>=0) *(INDIRECT(ADDRESS(ROW(),COLUMN(),1,1),TRUE)<10) *(MOD(INDIRECT(ADDRESS(ROW(),COLUMN(),1,1),TRUE),1)=0) ) )<>0
最終的に上記のように記述することで解決した。
#3.3
=( (INDIRECT(ADDRESS(ROW(),COLUMN(),1,1),TRUE)="X") +( (INDIRECT(ADDRESS(ROW(),COLUMN(),1,1),TRUE)>=0) *(INDIRECT(ADDRESS(ROW(),COLUMN(),1,1),TRUE)<10) *(MOD(INDIRECT(ADDRESS(ROW(),COLUMN(),1,1),TRUE),1)=0) ) )<>0
ちなみにこれはダメだった。なぜ・・・。
Excel よくわかんねえ!