簡體   English   中英

檢查單元格是否包含除z以外的其他字符; 0-9

[英]Check if cell contains other characters than a-z; 0-9

我在excel中尋找一種方法來檢查單元格中是否存在除字母az,數字0-9和字符“-”以外的其他字符

在“ A”列中,我列出了產品名稱,例如

A1:三星S7黑色

A2:蘋果手機6銀

A3:huawei-p9限量版!

我想在“ B”列中獲得以下信息

B1:

B2:

B3 :!

基本上,我正在尋找“否定”搜索,在該搜索中,我不定義不允許哪些字符,但更多的是允許在單元格中允許哪些字符並輸出不匹配的字符。 如果沒有VBA甚至可以做得更好。

如果您擁有Office 365 / Excel 2016,則可以在數組公式中使用TEXTJOIN函數:

B1: =TEXTJOIN("",TRUE,IF((CODE(MID(A3,seq,1))>=97)*(CODE(MID(A3,seq,1))<=122)+(CODE(MID(A3,seq,1))=45)+ISNUMBER(--MID(A3,seq,1))=1,"",MID(A3,seq,1)))

由於這是一個數組公式,因此需要在按下Enter鍵的同時按住ctrl + shift來“確認”它。 如果正確執行此操作,Excel將按照公式欄中的說明在公式周圍放置括號{...}

seq is a Name'd formula that refers to:

   =ROW(INDEX(Sheet1!$1:$65535,1,1):INDEX(Sheet1!$1:$65535,LEN(INDIRECT("RC[-1]",FALSE)),1))

請注意,我們使用RC版本的INDIRECT因此該公式需要放置在要測試的字符串的相鄰列中。

在此處輸入圖片說明

哦,如果您在實際數據中混合使用大小寫,請將公式中的A1替換為=LOWER(A1)

=TEXTJOIN("",TRUE,IF((CODE(MID(LOWER(A1),seq,1))>=97)*(CODE(MID(LOWER(A1),seq,1))<=122)+(CODE(MID(LOWER(A1),seq,1))=45)+ISNUMBER(--MID(LOWER(A1),seq,1))=1,"",MID(LOWER(A1),seq,1)))

如果沒有TEXTJOIN函數,則可以執行嵌套的SUBSTITUTE或使用VBA解決方案。

=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(LOWER(A1),"a",""),"b",""),"c",""),"d",""),"e",""),"f",""),"g",""),"h",""),"i",""),"j",""),"k",""),"l",""),"m",""),"n",""),"o",""),"p",""),"q",""),"r",""),"s",""),"t",""),"u",""),"v",""),"w",""),"x",""),"y",""),"z",""),"0",""),"1",""),"2",""),"3",""),"4",""),"5",""),"6",""),"7",""),"8",""),"9",""),"-","")

這是VBA解決方案。 將其放在工作簿模塊中,可以使用=remove_alphanumeric(A1)調用

Function remove_alphanumeric(InputString As String) As String
Dim i As Integer, strLen As Integer
Dim tmp_str As String, final As String
final = ""
i = 1
strLen = Len(InputString)
For i = 1 To strLen
    tmp_str = Mid(InputString, i, 1)
    If InStr(1, "abcdefghijklmnopqrstuvwxyz0123456789-", tmp_str) = 0 Then final = final + tmp_str
Next
remove_alphanumeric = final
End Function

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM