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 よくわかんねえ!