Microsoft Access 掲示板

文字と数字のデータを分けたい / 7

14 コメント
views
4 フォロー
7
hiroton 2023/08/04 (金) 10:49:57 d10a0@f966d

ACCESSの関数を使ってやるなら
その1

式1: Val("0" & Mid([フィールド],Len(Left(Left(Left(Left(Left(Left(Left(Left(Left(Left([フィールド],InStr([フィールド] & "0","0")),InStr([フィールド] & "1","1")),InStr([フィールド] & "2","2")),InStr([フィールド] & "3","3")),InStr([フィールド] & "4","4")),InStr([フィールド] & "5","5")),InStr([フィールド] & "6","6")),InStr([フィールド] & "7","7")),InStr([フィールド] & "8","8")),InStr([フィールド] & "9","9")))))

その2

式2: Val("0" & Mid([フィールド],InStr(Eval("IsNumeric(""" & Replace(Format([フィールド],Replace(String(Len([フィールド]),"&"),"&","&}{") & "&"),"}{",""")+0 & IsNumeric(""") & """)+0") & "-","-")-1))

※Eval関数が入力できないようなのでEvalを全角で記入しています

既存データの整形をしたいってだけならExcelでごりごりやるのが簡単だと思うけどね

通報 ...
  • 11
    hiroton 2023/08/04 (金) 14:30:03 d10a0@f966d >> 7

    もうちょっと頭を柔らかくしてみる

    式1: Val("0" & Mid([フィールド],InStr(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace([フィールド] & "{}","0","{}"),"1","{}"),"2","{}"),"3","{}"),"4","{}"),"5","{}"),"6","{}"),"7","{}"),"8","{}"),"9","{}"),"{}")))
    

    無理やり短くする

    式2: Val("0" & Mid([フィールド],Eval("InStr(" & Replace("//////////","/","Replace(") & """" & [フィールド] & "{}"", " & Replace("""0/1/2/3/4/5/6/7/8/9/","/",""", ""{}""), """) & "{}"")")))
    
    ※Evalは~(略)
    
    13

    そもそも「数字」を見つけたいのだから「間違ってヒットしてしまわないような単語({})を用意する必要はなく、ヒットさせる文字自体も変換する必要ないのだからもっと短くなるね

    式1: Val("0" & Mid([フィールド],InStr(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace([フィールド] & "0","1","0"),"2","0"),"3","0"),"4","0"),"5","0"),"6","0"),"7","0"),"8","0"),"9","0"),"0")))
    

    まだまだ頭が固い証拠