[[20250508134723]] 『3桁の数字中、各位に指定した数字が出た場合の』(hiro) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) |

| 全文検索 | 過去ログ ]

 

『3桁の数字中、各位に指定した数字が出た場合の✖判定』(hiro)

000〜999までの3桁のランダムな数字中、100の位、10の位、1の位に指定した数字がきた場合、〇×の"×"判定ができる関数を教えてください。

例えば、100の位に"0"、10の位に"4"、1の位に"9"の数字を指定し、085,006,024とランダムな数字が出た場合、100の位に"0"があるので×、
10の位も同じように847,149,540とランダムな数字が出た場合、10の位に"4"があるので×、1の位も同様に"9"が出た場合×、となるようにしたいです。
難しい関数を知らない素人寄りですが、どうぞよろしくお願いします。

< 使用 Excel:Excel2021、使用 OS:Windows11 >


>数字を指定し
指定する数字は変動するんですか、それとも固定ですか。
(?) 2025/05/08(木) 15:01:12

指定する数値、あるいは評価する数値、さらに言えば結果などをどこに配置するのですか?
また、それらは数値で入力されているのか、文字列で入力されているのか?
普通に数値で入力したら085とはならずに85と表示されますけれどね。
(ゆたか) 2025/05/08(木) 15:11:51

3桁のランダムな数字をA1、A2、A3に
指定数字を100の位:B1、10の位:B2、1の位:B3
判定をA4
として

  A4=IF(OR(INT(MOD(A1/100,10))=B1,INT(MOD(A2/10,10))=B2,MOD(A3,10)=B3),
  "×","")

(通りすがり) 2025/05/08(木) 15:57:59


あ、忘れた

 A1、A2、A3にそれぞれ
 =TEXT(RANDBETWEEN(0,999),"000")
(通りすがり) 2025/05/08(木) 16:01:13

シート名 Sheet1 が対象です。このシートの情報は全て初期化されます[もとい、すべてではありません^^;]
終了は終わるまでHome キーを押しながら処理してください。。。( ̄▽ ̄;)

 Public Declare PtrSafe Function GetAsyncKeyState Lib "User32.dll" (ByVal vKey As Long) As Long
 Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Option Explicit
Sub ProgramMain()
    Dim nm
    nm = Accept3StrValues
    If nm = "False" Then Exit Sub
    RandanNumberDemo nm
End Sub
Private Sub RandanNumberDemo(nm)
    Randomize
    Dim rn As Long
    Dim n1n, n10n, n100n
    Dim t1t, t10t, t100t
    With Worksheets("Sheet1")
        .UsedRange.Clear
        .Activate
        .[c3].Value = nm
        n1n = Split(nm, ",")(2)
        n10n = Split(nm, ",")(1)
        n100n = Split(nm, ",")(0)
        Do
            rn = Int((10000000 - 0 + 1) * Rnd + 0)
            With .[c5]
                .Value = rn
                .NumberFormatLocal = "0,0"
            End With
            t1t = Right(CStr(rn), 1)
            t10t = Mid(CStr(rn), Len(CStr(rn)) - 1, 1)
            t100t = Mid(CStr(rn), Len(CStr(rn)) - 2, 1)
            If n1n = t1t Or n10n = t10t Or n100n = t100t Then
                .[e5].Value = "×"
            Else
                .[e5].Value = "○ (*^^*)"
            End If
            Sleep (1000)
            MsgBox "STOP"
            DoEvents
            .[e5].Value = ""
            If GetAsyncKeyState(36) Then
                .UsedRange.Clear
                Exit Do
            End If
        Loop
    End With
End Sub
Private Function Accept3StrValues() As Variant
    Dim x, i&, fn&, vAr
    Dim eflg As Boolean
    Do
        x = Application.InputBox("3個数字を入力して下さい", "VBA", "000", , , , , 2)
        If x = "False" Then
            Accept3StrValues = False
            Exit Do
        End If
        If Len(x) = 3 Then
            For i = 1 To Len(x)
                If Mid(x, i, 1) Like "[0-9]" Then
                    fn = fn + 1
                End If
            Next
            If fn = 3 Then
                For i = 1 To fn
                    vAr = vAr & Mid(x, i, 1) & ","
                Next
                vAr = Left(vAr, 5)
                Accept3StrValues = vAr
                Exit Do
            End If
        End If
    Loop
End Function
(隠居Z) 2025/05/08(木) 16:33:40

 A1に3桁の数字があるとして、
 =IF(OR(MID(TEXT(A1,"000"),{1,2,3},1)={"0","4","9"}),"×","")
 とかではどうでしょう
(´・ω・`) 2025/05/08(木) 16:35:42

 なんかダメっぽい
(´・ω・`) 2025/05/08(木) 16:37:04

=IF(OR(MID(TEXT(A1,"000"),{1,2,3},1)={"0","4","9"}),"×","") できました!
ありがとうございます。これで十分ですが、

あと、指定する数字0,4,9が一定期間おきにランダムに変わる場合に対応する関数もご存知でしたらお願いします。
例えば、0,4,9が一定期間経つと5,3,6とか2,2,9とかランダムに変わる場合の関数です。
よろしくお願いします。
(hiro) 2025/05/08(木) 16:57:43


追記:指定する3桁の数字がランダムに変わる5,3,6とか2,2,9の数字は、位ごとにセルに1桁ずつあります。
(hiro) 2025/05/08(木) 17:02:29

>一定期間経つと
その期間は。
>5,3,6とか2,2,9とか
>セルに1桁ずつあります。
それは何処にあるんですか。
あーしたい、こうしたいだけでは困りすよ。
きちんとそれなりに説明されたらどうですか。

(?) 2025/05/08(木) 17:10:07


 >位ごとにセルに1桁ずつあります
 B1:D1だとして 
 =IF(OR(EXACT(MID(TEXT(A1,"000"),{1,2,3},1),B1:D1)),"×","")

 連続しない3つのセルだとちょっと面倒で、365ならHSTACK関数つかって
 =IF(OR(EXACT(MID(TEXT(A1,"000"),{1,2,3},1),HSTACK(B1,C1,D1))),"×","")
 ですが、2021だとどうしましょうね
(´・ω・`) 2025/05/08(木) 17:25:39

     |[A]|[B]|[C]|[D]  |[E]  |[F]  
 [1] |245|   |◯ |3桁目|2桁目|1桁目
 [2] |426|   |× |    3|    2|    9
 [3] |358|   |× |     |     |     
 [4] |869|   |× |     |     |     
 [5] |924|   |× |     |     |     
 [6] |343|   |× |     |     |     
 [7] |590|   |◯ |     |     |     
 [8] |292|   |◯ |     |     |     
 [9] |746|   |◯ |     |     |     
 [10]|293|   |◯ |     |     |     

 これでいいのなら後日、数式は提示します。

(?) 2025/05/08(木) 21:43:35


=IF(OR(EXACT(MID(TEXT(A1,"000"),{1,2,3},1),B1:D1)),"×","") で出来ました!
とても助かりました。ありがとうございます。

(hiro) 2025/05/09(金) 08:19:31


コメント返信:

[ 一覧(最新更新順) ]


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