❶ Excel中如何同時查找並替換不同的字元串
首先製作一張數字與姓名對應的表格,然後在用函數vlookup()來實現。
語法
VLOOKUP(lookup_value,table_array,col_index_num,range_lookup)
Lookup_value 為需要在表格數組 (數組:用於建立可生成多個結果或可對在行和列中排列的一組參數進行運算的單個公式。數組區域共用一個公式;數組常量是用作參數的一組常量。)第一列中查找的數值。Lookup_value 可以為數值或引用。若 lookup_value 小於 table_array 第一列中的最小值,VLOOKUP 返回錯誤值 #N/A。
Table_array 為兩列或多列數據。使用對區域或區域名稱的引用。table_array 第一列中的值是由 lookup_value 搜索的值。這些值可以是文本、數字或邏輯值。文本不區分大小寫。
Col_index_num 為 table_array 中待返回的匹配值的列序號。Col_index_num 為 1 時,返回 table_array 第一列中的數值;col_index_num 為 2,返回 table_array 第二列中的數值,以此類推。如果 col_index_num :
小於 1,VLOOKUP 返回錯誤值 #VALUE!。
大於 table_array 的列數,VLOOKUP 返回錯誤值 #REF!。
Range_lookup 為邏輯值,指定希望 VLOOKUP 查找精確的匹配值還是近似匹配值:
如果為 TRUE 或省略,則返回精確匹配值或近似匹配值。也就是說,如果找不到精確匹配值,則返回小於 lookup_value 的最大數值。
table_array 第一列中的值必須以升序排序;否則 VLOOKUP 可能無法返回正確的值。有關詳細信息,請參閱排序數據。
如果為 FALSE,VLOOKUP 將只尋找精確匹配值。在此情況下,table_array 第一列的值不需要排序。如果 table_array 第一列中有兩個或多個值與 lookup_value 匹配,則使用第一個找到的值。如果找不到精確匹配值,則返回錯誤值 #N/A。
註解
在 table_array 第一列中搜索文本值時,請確保 table_array 第一列中的數據沒有前導空格、尾部空格、直引號(' 或 ")與彎引號(『或「)不一致或非列印字元。否則,VLOOKUP 可能返回不正確或意外的值。有關詳細信息,請參閱 CLEAN 和 TRIM。
在搜索數字或日期值時,請確保 table_array 第一列中的數據未存儲為文本值。否則,VLOOKUP 可能返回不正確或意外的值。有關詳細信息,請參閱將保存為文本的數字轉換為數字值。
如果 range_lookup 為 FALSE 且 lookup_value 為文本,則可以在 lookup_value 中使用通配符、問號 (?) 和星號 (*)。問號匹配任意單個字元;星號匹配任意字元序列。如果要查找實際的問號或星號,請在該字元前鍵入波形符 (~)。
示例 1
如果將示例復制到一個空白工作表中,可能會更易於理解。
如何復制示例
創建一個空白工作簿或工作表。
在幫助主題中選擇示例。
注釋 請不要選擇行或列標題。
從幫助中選擇示例
按 Ctrl+C。
在工作表中,選擇單元格 A1,然後按 Ctrl+V。
若要在查看結果和查看返回結果的公式之間切換,請按 Ctrl+`(重音符),或在「公式」選項卡的「公式審核」組中,單擊「顯示公式」按鈕。
本示例搜索大氣特徵表的「密度」列以查找「粘度」和「溫度」列中對應的值。(該值是在海平面 0 攝氏度或 1 個大氣壓下對空氣的測定。)
1
2
3
4
5
6
7
8
9
10
A B C
密度 粘度 溫度
0.457 3.55 500
0.525 3.25 400
0.616 2.93 300
0.675 2.75 250
0.746 2.57 200
0.835 2.38 150
0.946 2.17 100
1.09 1.95 50
1.29 1.71 0
公式 說明(結果)
=VLOOKUP(1,A2:C10,2) 使用近似匹配搜索 A 列中的值 1,在 A 列中找到小於等於 1 的最大值 0.946,然後返回同一行中 B 列的值。(2.17)
=VLOOKUP(1,A2:C10,3,TRUE) 使用近似匹配搜索 A 列中的值 1,在 A 列中找到小於等於 1 的最大值 0.946,然後返回同一行中 C 列的值。(100)
=VLOOKUP(.7,A2:C10,3,FALSE) 使用精確匹配在 A 列中搜索值 0.7。因為 A 列中沒有精確匹配的值,所以返回一個錯誤值。(#N/A)
=VLOOKUP(0.1,A2:C10,2,TRUE) 使用近似匹配在 A 列中搜索值 0.1。因為 0.1 小於 A 列中最小的值,所以返回一個錯誤值。(#N/A)
=VLOOKUP(2,A2:C10,2,TRUE) 使用近似匹配搜索 A 列中的值 2,在 A 列中找到小於等於 2 的最大值 1.29,然後返回同一行中 B 列的值。(1.71)
示例 2
如果將示例復制到一個空白工作表中,可能會更易於理解。
如何復制示例
創建一個空白工作簿或工作表。
在幫助主題中選擇示例。
注釋 請不要選擇行或列標題。
從幫助中選擇示例
按 Ctrl+C。
在工作表中,選擇單元格 A1,然後按 Ctrl+V。
若要在查看結果和查看返回結果的公式之間切換,請按 Ctrl+`(重音符),或在「公式」選項卡的「公式審核」組中,單擊「顯示公式」按鈕。
本示例搜索嬰幼兒用品表中「貨品 ID」列並在「成本」和「漲幅」列中查找與之匹配的值,以計算價格並測試條件。
1
2
3
4
5
6
A B C D
貨品 ID 貨品 成本 漲幅
ST-340 童車 ¥145.67 30%
BI-567 圍嘴 ¥3.56 40%
DI-328 尿布 ¥21.45 35%
WI-989 柔濕紙巾 ¥5.12 40%
AS-469 吸出器 ¥2.56 45%
公式 說明(結果)
= VLOOKUP("DI-328", A2:D6, 3, FALSE) * (1 + VLOOKUP("DI-328", A2:D6, 4, FALSE)) 漲幅加上成本,計算尿布的零售價。(¥28.96)
= (VLOOKUP("WI-989", A2:D6, 3, FALSE) * (1 + VLOOKUP("WI-989", A2:D6, 4, FALSE))) * (1 - 20%) 零售價減去指定折扣,計算柔濕紙巾的銷售價格。(¥5.73)
= IF(VLOOKUP(A2, A2:D6, 3, FALSE) >= 20, "漲幅為 " & 100 * VLOOKUP(A2, A2:D6, 4, FALSE) &"%", "成本低於 ¥20.00") 如果某一貨品的成本大於或等於 ¥20.00,則顯示字元串「漲幅為 nn%」;否則,顯示字元串「成本低於 ¥20.00」。(漲幅為 30%)
= IF(VLOOKUP(A3, A2:D6, 3, FALSE) >= 20, "漲幅為: " & 100 * VLOOKUP(A3, A2:D6, 4, FALSE) &"%", "成本為 ¥" & VLOOKUP(A3, A2:D6, 3, FALSE)) 如果某一貨品的成本大於或等於 ¥20.00,則顯示字元串「漲幅為 nn%」;否則,顯示字元串「成本為 ¥n.nn」。(成本為 ¥3.56)
示例 3
如果將示例復制到一個空白工作表中,可能會更易於理解。
如何復制示例
創建一個空白工作簿或工作表。
在幫助主題中選擇示例。
注釋 請不要選擇行或列標題。
從幫助中選擇示例
按 Ctrl+C。
在工作表中,選擇單元格 A1,然後按 Ctrl+V。
若要在查看結果和查看返回結果的公式之間切換,請按 Ctrl+`(重音符),或在「公式」選項卡的「公式審核」組中,單擊「顯示公式」按鈕。
本示例搜索員工表的 ID 列並查找其他列中的匹配值,以計算年齡並測試錯誤條件。
1
2
3
4
5
6
7
A B C D E
ID 姓
名 職務 出生日期
1 李 小明 銷售代表 12/8/1968
2 林 彩瑜 銷售副總裁 2/19/1952
3 王 志東 銷售代表 8/30/1963
4 潘 金 銷售代表 9/19/1958
5 林 丹 銷售經理 3/4/1955
6 蘇 術平 銷售代表 7/2/1963
公式 說明(結果)
=INT(YEARFRAC(DATE(2004,6,30), VLOOKUP(5,A2:E7,5, FALSE), 1)) 針對 2004 財政年度,查找 ID 為 5 的員工的年齡。使用 YEARFRAC 函數,以此財政年度的結束日期減去出生日期,然後使用 INT 函數將結果以整數形式顯示。(49)
=IF(ISNA(VLOOKUP(5,A2:E7,2,FALSE)) = TRUE, "未發現員工", VLOOKUP(5,A2:E7,2,FALSE)) 如果有 ID 為 5 的員工,則顯示該員工的姓氏;否則,顯示消息「未發現員工」。(林)
當 VLOOKUP 函數返回錯誤值 #NA 時,ISNA 函數返回值 TRUE。
=IF(ISNA(VLOOKUP(15,A3:E8,2,FALSE)) = TRUE, "未發現員工", VLOOKUP(15,A3:E8,2,FALSE)) 如果有 ID 為 15 的員工,則顯示該員工的姓氏;否則,顯示消息「未發現員工」。(未發現員工)
當 VLOOKUP 函數返回錯誤值 #NA 時,ISNA 函數返回值 TRUE。
=VLOOKUP(4,A2:E7,3,FALSE) & " " & VLOOKUP(4,A2:E7,2,FALSE) & "是" & VLOOKUP(4,A2:E7,4,FALSE) & "。" 對於 ID 為 4 的員工,將三個單元格的值連接為一個完整的句子。(潘金是銷售代表。)
❷ excel vb 如何查找替換字元串
如果1,2,3,等是在不同的單元格,那麼將要替換的放在後面的單元格,使用vlookup查找函數可以替換
❸ Excel如何用公式模糊查找並列出有相同字元串的單元格到另一列。
在G4單元格輸入以下數組公式, 按Ctrl+Shift+Enter組合鍵結束,然後向下填充公式
=INDEX(A:A,SMALL(IF(ISNUMBER(FIND(F$4,A$1:A$7)),ROW($1:$7),4^8),ROW(A1)))&""
❹ asp中如何判斷一字元串中有幾個人名
將百家姓做成一個數組,然後把字元串拆分成數組。然後遍歷。
不過如果名字里還有姓時估計就不好使了
比如:賈林
兩個字都時姓氏。
你的字元串是:「張三
李四
王麻子」嗎?
還是"張
三
李四
王
麻子"。裡面的空格很亂哦
------------------------------------------------
不規范的話就要去掉所有空格,按百家姓重排。就像我上面說的,不能保證准確率
❺ excel vb 如何查找替換字元串
法一:=CHOOSE(A1,"張三","李四","王麻子")
法二:=if(A1=1,"張三",if(A1=2,"李四","王麻子"))
法三:=lookup(A1,{1,2,3},{"張三","李四","王麻子"})
應該還有其他的一些方法,先這樣了
❻ vb怎麼實現在text搜索字元串
你的意思是需要按拼音碼查詢
一般資料庫編程時用的比較多。
首先你需要把中文的字元轉成拼音碼
如:王麻子 轉換後 WMZ
轉換的函數
Private Function GetPY(ByVal strParmeter As String) As String
Dim intTmp As String, i As Long
For i = 1 To Len(strParmeter)
intTmp = Asc(Mid(strParmeter, i, 1))
If intTmp < Asc("啊") Then
GetPY = GetPY & "*"
ElseIf intTmp >= Asc("啊") And intTmp < Asc("芭") Then
GetPY = GetPY & "A"
ElseIf intTmp >= Asc("芭") And intTmp < Asc("擦") Then
GetPY = GetPY & "B"
ElseIf intTmp >= Asc("擦") And intTmp < Asc("搭") Then
GetPY = GetPY & "C"
ElseIf intTmp >= Asc("搭") And intTmp < Asc("蛾") Then
GetPY = GetPY & "D"
ElseIf intTmp >= Asc("蛾") And intTmp < Asc("發") Then
GetPY = GetPY & "E"
ElseIf intTmp >= Asc("發") And intTmp < Asc("噶") Then
GetPY = GetPY & "F"
ElseIf intTmp >= Asc("噶") And intTmp < Asc("哈") Then
GetPY = GetPY & "G"
ElseIf intTmp >= Asc("哈") And intTmp < Asc("擊") Then
GetPY = GetPY & "H"
ElseIf intTmp >= Asc("擊") And intTmp < Asc("喀") Then
GetPY = GetPY & "J"
ElseIf intTmp >= Asc("喀") And intTmp < Asc("垃") Then
GetPY = GetPY & "K"
ElseIf intTmp >= Asc("垃") And intTmp < Asc("媽") Then
GetPY = GetPY & "L"
ElseIf intTmp >= Asc("媽") And intTmp < Asc("拿") Then
GetPY = GetPY & "M"
ElseIf intTmp >= Asc("拿") And intTmp < Asc("哦") Then
GetPY = GetPY & "N"
ElseIf intTmp >= Asc("哦") And intTmp < Asc("啪") Then
GetPY = GetPY & "O"
ElseIf intTmp >= Asc("啪") And intTmp < Asc("期") Then
GetPY = GetPY & "P"
ElseIf intTmp >= Asc("期") And intTmp < Asc("然") Then
GetPY = GetPY & "Q"
ElseIf intTmp >= Asc("然") And intTmp < Asc("撒") Then
GetPY = GetPY & "R"
ElseIf intTmp >= Asc("撒") And intTmp < Asc("塌") Then
GetPY = GetPY & "S"
ElseIf intTmp >= Asc("塌") And intTmp < Asc("挖") Then
GetPY = GetPY & "T"
ElseIf intTmp >= Asc("挖") And intTmp < Asc("昔") Then
GetPY = GetPY & "W"
ElseIf intTmp >= Asc("昔") And intTmp < Asc("壓") Then
GetPY = GetPY & "X"
ElseIf intTmp >= Asc("壓") And intTmp < Asc("匝") Then
GetPY = GetPY & "Y"
ElseIf intTmp >= Asc("匝") And intTmp < 0 Then
GetPY = GetPY & "Z"
ElseIf (intTmp >= 65 And intTmp <= 91) Or (intTmp >= 97 And intTmp <= 123) Then
GetPY = GetPY & Mid(strParmeter, i, 1)
Else
GetPY = GetPY & "*"
End If
Next
End Function
至於在TEXT2中顯示搜索,我不知道你的數據源是什麼格式,沒有辦法給你寫出來。