[[20221127072516]] 『データの入力規則がうまくいきません』(ログ) ページの最後に飛ぶ

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

 

『データの入力規則がうまくいきません』(ログ)

お尋ねします。
データの入力規則で行き詰っています。
以下のように設定してまして、B18に日付が入っている場合、
B19、B20ともに、数値は入力できるのですが、場合によっては数値ではない値を入力することもあるという前提にしてるので、数値ではない値を入力しようとすると、「この値は、このセルに定義されているデータ入力規則の条件を満たしていません。」と表示されてしまい、入力できないのです。
どこに問題があるのか、ご指摘いただきたいです。
よろしくお願いします。

B18:H18=日付(条件により空白になる)

B19=セルの書式設定は「数値」
B19にデータの入力規則を設定=ユーザー設定→数式=IF(B$18<>"",B$19,"")→空白を無視するのチェックを外す

B20=セルの書式設定は「標準」
B20にデータの入力規則を設定=ユーザー設定→数式=IF(B$18<>"",B$20,"")→空白を無視するのチェックを外す

< 使用 Excel:Excel2019、使用 OS:Windows10 >


入力規則でユーザー設定のときの数式は、
入力を許可する値のときときにTrue、入力を許可しない値のときFalseになる式をいれます
式の結果は、TrueかFalseと解釈可能な値でないと行けません
(トォーリス・ガリ) 2022/11/27(日) 08:07:54

ありがとうございます。
というと、関数の設定を具体的にどのように修正する必要があるでしょうか?

(ログ) 2022/11/27(日) 08:15:49


 別の者ですが。

 B19、B20セルへの入力に、どのような条件をつけたいのかが、
 質問文から明確に読み取れません。
 明記してもらえますか?
  
(γ) 2022/11/27(日) 08:25:02

ありがとうございます。
B19、B20ともに、B18に日付が入っていれば、入力を許可させたいのです。
空白なら、許可しないようにしたいです。
(ログ) 2022/11/27(日) 10:52:26

 # もっと気の利いたものが提案されるかもしれませんが、とりあえず。

 =AND($A$18が日付,A19<>"")
 という意味の入力規則であればいいわけですね。

 A18が日付というのは、ちょっと思いつかなかったので
 ユーザー定義関数を使います。
 ただし、入力規則内で直接的にユーザー定義関数を使えないので、
 やむなく、作業領域として、B18セルを使うことにします。
 (別のセルでも構いません。邪魔ならフォント色を白にしてください)

 (1) 下記のユーザー定義関数を作成します
 Function check(r As Range) As Boolean
     check = IsDate(r.Text)
 End Function

 (2)
 B18セルに、 = check(A18) とします
 (3)
 A19セルの入力規則にユーザー定義で、
 =AND($B$18,A19<>"")
 とします。
 A20も同様です。

 また、エラーメッセージに、
 「A18に日付が入っている必要があります」
 などと設定しておくとよいと思います。
  
(γ) 2022/11/27(日) 11:53:55

 ああセル範囲を間違えていますね。
 適宜読み替えてください。
  
(γ) 2022/11/27(日) 12:13:33

=AND(ISNUMBER(A18),INT(A18)>0)
(考え無し) 2022/11/27(日) 12:24:26

 =B18<>""

 これで何か問題ありますか?
 B18は日付か空白のどちらかなんでしょ?

 ところで ↓ はどうなったんですか?
[[20221122154432]]『月ごとの曜日ごとの日数を条件を付けてカウント』(ログ)

 同じ人ですよね?

 以上
(笑) 2022/11/27(日) 12:30:19

 20行目にコピーするんだったら

 =B$18<>""

 ですね
(笑) 2022/11/27(日) 12:43:20

 >=IF(B$18<>"",B$19,"")
 >どこに問題があるのか、ご指摘いただきたいです。

 B18が空白ではないとき
 その条件で TRUE になるのは、B19が「0以外の数値」の場合。
 なので、文字列はもちろん、数値でも「0」は入力できないでしょ?

 B18が空白ではない、という条件だけでいいんですよ。

 以上
(笑) 2022/11/27(日) 15:00:37

すみません。γさんと笑さんのご返事を整理しますと、
(1)ユーザー定義関数を作成します → 標準モジュールにコードを書くということでしょうか?
(2)B18セルに、 =check(A18) とします → J18セルに=check(B$18)でもよいでしょうか?
(3)A19セルの入力規則にユーザー定義で、=AND($B$18,A19<>"")とします。A20も同様です。 → B19セルの入力規則にユーザー定義で、=AND($B$18,J$18<>"")でもよいでしょうか?B20セルの入力規則にユーザー定義で、=AND($B$18,J$20<>"")でもよいでしょうか?

笑さんのご指摘どおり、過去の質問の返事を忘れておりました。申し訳ありませんでした。

(ログ) 2022/11/27(日) 15:26:10


 入力規則の数式: =B$18<>""
「空白を無視する」のチェックを外す

 ↑ だけで何か問題ありましたか?
 あったのならどんな問題か、具体的に説明してください。

 18行目は日付か空白のどちらかなんですよね?
 入力された値が日付かどうかなんてチェックする必要ありますか?

 以上
(笑) 2022/11/27(日) 15:47:21

笑さんのおっしゃるとおり、
=B$18<>""と「空白を無視する」のチェックを外す、これだけで入力の許可、不可が可能になりました。
ありがとうございました。
(ログ) 2022/11/27(日) 16:24:12

コメント返信:

[ 一覧(最新更新順) ]


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