[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『条件に合う文字列に〇をつけたい』(エクセル初心者)
(B) (C) 1 abc12345 2 123456ab 3 a1234 4 abcdef 5 ab123456
上のような表で、
B列で(文字列2〜3文字)のあとに(数字4〜6文字)
という条件に合致する行のC列に〇、しない行に×という関数を知りたいです。
文字と数字の組み合わせ方が検索してもいまいちわからず・・・。
よろしくお願いいたします。
< 使用 Excel:Microsoft365、使用 OS:Windows10 >
もうちょっとで、ワークシート関数で正規表現使えるらしいですが、 現状ではワークシード関数でやろうとすると結構大変な気がします。 VBAでやる(VBAでワークシート関数つくる)とか、
PY関数つかってみます? =PY( までセルに入力してTabキーおす import re "○" if re.fullmatch("\D{2,3}\d{4,6}",xl("B2")) else "×" と入力してCtrl+Enterで確定 (´・ω・`) 2024/10/07(月) 09:20:02
=LET( _a,TEXTBEFORE(A1,SEQUENCE(10,,0),,TRUE,,""), _b,IFERROR(TEXTAFTER(A1,_a,,TRUE),""), fx,LAMBDA(x,s,e,MEDIAN(LEN(x),s,e)=LEN(x)), IF(AND(fx(_a,2,3),fx(_b,4,6)),"〇","×") )
「○(まる)」じゃなくて「〇(漢数字のゼロ)」でいいんですよね?
(d-q-t-p) 2024/10/07(月) 09:27:05
スプレッドシート(Google)で行う
=IF(REGEXMATCH(B1,"^[A-Z]{2,3}[0-9]{4,6}$"),"◯","✘")
エクセルでREGEXTEST関数が使えるようになったら、
REGEXMATCH関数をREGEXTEST関数に置き換えるだけですが。
現状のエクセル関数でもできないことはないかもですが、大変かも。
また、現状のエクセルに正規表現を導入するマクロとかもありそうです。
例)
https://qiita.com/ktyubeshi/items/74228f18498224c7427d
(ゆたか) 2024/10/07(月) 09:53:02
ユーザー定義関数にするとこんな感じかな。
Function CheckPattern(cell As String) As String Dim regex As Object
Application.Volatile Set regex = CreateObject("VBScript.RegExp")
' パターンを設定する regex.Pattern = "^[a-zA-Z]{2,3}\d{4,6}$"
If regex.Test(cell) Then CheckPattern = "〇" Else CheckPattern = "×" End If End Function (通りすがり助六) 2024/10/07(月) 10:30:50
数字以外{2,3}個&数字{4;5;6}個の文字列かどうかのチェック =IF(OR(CONCAT(IFERROR(MID(A1,SEQUENCE(LEN(A1)),1)*0,1))=REPT(1,{2,3})&REPT(0,{4;5;6})),"○","×") (んなっと) 2024/10/07(月) 11:51:38
んなっとさんの式に感心しきりでございます (´・ω・`) 2024/10/07(月) 12:06:46
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.