Excelの入力規則についての質問となるのですが、
Excelのあるセルに入力規則を設定し、
IPアドレスが入力された場合のみ、入力を許可するような動きを
実現したいと考えています。
動きとしては、A1セルに入力規則を指定し、
以下のような数値の場合のみ、入力OKとしたいです。
(セルに全角英字や記号などが入力された場合もNG)
[許可]
192.168.1.1
192.168.1.2
[NG]
192.168.101.
256.256.256.256
上記のようなことは、Excelの入力規則の数式などで実現は可能でしょうか?
ご教授いただければ幸いです。
よろしくお願いします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答3件
0
ベストアンサー
入力規則の数式ではマクロは使えないようでしたので、ネットで調べたらちょうどいいのがありました。
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q11156148536
この中のwas********さんの回答が使えそうです。
以下、転載。
Excel
1=PRODUCT(N(MID(SUBSTITUTE(SUBSTITUTE(B2,".","X",4),".",REPT(" ",100)),ROW(A$1:A$4)*100-99,100)*1<2^8),LEFT(B2))
B2のところをチェックしたいセルのアドレスにしてください。
詳しく解析はしてませんが、すごそうなのはわかる。
投稿2019/01/16 07:52
編集2019/01/16 07:53総合スコア17000
0
関数ゴリゴリ書くのもわかりにくいので、標準モジュールに判定関数を書いて、その結果を条件付き書式に設定すればよいかな、とか思いますがどうでしょう?
雑いですが、正しいIP(v4)アドレスならばtrueを返す関数はこんな感じです。
VBA
1Function IsIPv4Str(TestString As String) 2 'とりあえず判定結果はNGとする 3 IsIPv4Str = False 4 5 '「.」で区切る 6 Address = Split(TestString, ".") 7 8 '区切った結果の配列が4でなければ終了 9 If UBound(Address) <> 3 Then Exit Function 10 11 '各要素をチェック 12 For i = 0 To 3 13 '1要素取り出す 14 Octet = Address(i) 15 '対象の要素が、数値として判別できないか、0より小さいか、255より大きければ、判定終了 16 If Not (IsNumeric(Octet)) Or Val(Octet) < 0 Or 255 < Val(Octet) Then Exit Function 17 Next 18 19 'ここまでの判定が通れば判定結果をOKとする 20 IsIPv4Str = True 21End Function
投稿2019/01/16 07:58

退会済みユーザー
総合スコア0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/01/16 23:59

退会済みユーザー
2019/01/17 01:01
2019/01/17 01:10

0
できそうですが、面倒なので途中で挫折しました。
- LEFTやRIGHTとFINDを駆使して、.で区切られた要素を4つみつける(これが大変だと思う)
- 上記のそれぞれをVALUEにかけて数値化して、0以上、255以下であることをANDで判定
- 4セグメントを全部ANDにかける
上記で組んだ関数を入力規則のユーザ設定に入れる
投稿2019/01/16 07:12
編集2019/01/16 07:31総合スコア12705
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
関連した質問
ExcelのセルにIPアドレスが入力された時のOKとする入力規則