顯示具有 Excel 標籤的文章。 顯示所有文章
顯示具有 Excel 標籤的文章。 顯示所有文章

2018年8月28日 星期二

如何藉由使用 Excel 中的 Visual Basic 程序選取儲存格/範圍

from: https://support.microsoft.com/zh-tw/help/291308/how-to-select-cells-ranges-by-using-visual-basic-procedures-in-excel

1: 如何在使用中的工作表上選取儲存格

若要在使用中的工作表上選取儲存格 D5,您可以使用下列其中一個範例:
ActiveSheet.Cells(5, 4).Select
- 或 -
ActiveSheet.Range("D5").Select

2: 如何在相同的活頁簿中選取另一個工作表上的儲存格

若要在相同的活頁簿中選取另一個工作表上的儲存格 E6,您可以使用下列其中一個範例:
Application.Goto ActiveWorkbook.Sheets("Sheet2").Cells(6, 5)
   - 或 -
 
Application.Goto (ActiveWorkbook.Sheets("Sheet2").Range("E6"))
或者,您可以啟動工作表,然後使用上述的方法 1 來選取儲存格:
Sheets("Sheet2").Activate
ActiveSheet.Cells(6, 5).Select

3: 如何在不同的活頁簿中選取工作表上的儲存格

若要在不同的活頁簿中選取工作表上的儲存格 F7,您可以使用下列其中一個範例:
Application.Goto Workbooks("BOOK2.XLS").Sheets("Sheet1").Cells(7, 6)
- 或 -
Application.Goto Workbooks("BOOK2.XLS").Sheets("Sheet1").Range("F7")
或者,您可以啟動工作表,然後使用上述的方法 1 來選取儲存格:
Workbooks("BOOK2.XLS").Sheets("Sheet1").Activate
ActiveSheet.Cells(7, 6).Select

4: 如何在使用中的工作表上選取儲存格範圍

若要在使用中的工作表上選取範圍 C2:D10,您可以使用下列其中一個範例:
ActiveSheet.Range(Cells(2, 3), Cells(10, 4)).Select
ActiveSheet.Range("C2:D10").Select
ActiveSheet.Range("C2", "D10").Select

5: 如何在相同的活頁簿中選取另一個工作表上的儲存格範圍

若要在相同的活頁簿中選取另一個工作表上的範圍 D3:E11,您可以使用下列其中一個範例:
Application.Goto ActiveWorkbook.Sheets("Sheet3").Range("D3:E11")
Application.Goto ActiveWorkbook.Sheets("Sheet3").Range("D3", "E11")
或者,您可以啟動工作表,然後使用上述的方法 4 來選取範圍:
Sheets("Sheet3").Activate
ActiveSheet.Range(Cells(3, 4), Cells(11, 5)).Select

6: 如何在不同的活頁簿中選取工作表上的儲存格範圍

若要在不同的活頁簿中選取工作表上的範圍 E4:F12,您可以使用下列其中一個範例:
Application.Goto Workbooks("BOOK2.XLS").Sheets("Sheet1").Range("E4:F12")
Application.Goto _
      Workbooks("BOOK2.XLS").Sheets("Sheet1").Range("E4", "F12")
或者,您可以啟動工作表,然後使用上述的方法 4 來選取範圍:
Workbooks("BOOK2.XLS").Sheets("Sheet1").Activate
   ActiveSheet.Range(Cells(4, 5), Cells(12, 6)).Select

7: 如何在使用中的工作表上選取具名的範圍

若要在使用中的工作表上選取具名範圍 "Test",您可以使用下列其中一個範例:
Range("Test").Select
Application.Goto "Test"

8: 如何在相同的活頁簿中選取另一個工作表上的具名範圍

若要在相同的活頁簿中選取另一個工作表上的具名範圍 "Test",您可以使用下列範例:
Application.Goto Sheets("Sheet1").Range("Test")
或者,您可以啟動工作表,然後使用上述的方法 7 來選取具名範圍:
Sheets("Sheet1").Activate
Range("Test").Select

9: 如何在不同的活頁簿中選取工作表上的具名範圍

若要在不同的活頁簿中選取工作表上的具名範圍 "Test",您可以使用下列範例:
Application.Goto _
   Workbooks("BOOK2.XLS").Sheets("Sheet2").Range("Test")
或者,您可以啟動工作表,然後使用上述的方法 7 來選取具名範圍:
Workbooks("BOOK2.XLS").Sheets("Sheet2").Activate
Range("Test").Select

10: 如何選取相對於使用中儲存格的儲存格

若要選取位於使用中儲存格下方五列和左邊四欄之間的儲存格,您可以使用下列範例:
ActiveCell.Offset(5, -4).Select
若要選取位於使用中儲存格上方兩列和右邊三欄之間的儲存格,您可以使用下列範例:
ActiveCell.Offset(-2, 3).Select
注意 如果嘗試選取「不在工作表之內」的儲存格,將會發生錯誤。 如果使用中儲存格是在欄 A 到 D 之間,則上面的第一個範例將會傳回錯誤,因為向左移動四欄會讓使用中儲存格置於無效的儲存格位址。 

11: 如何選取相對於另一個 (不是使用中) 儲存格的儲存格

若要選取位於儲存格 C7 下方五列和右邊四欄之間的儲存格,您可以使用下列其中一個範例:
ActiveSheet.Cells(7, 3).Offset(5, 4).Select
ActiveSheet.Range("C7").Offset(5, 4).Select

12: 如何選取從指定範圍位移的儲存格範圍

若要選取與具名範圍 "Test" 大小相同,但向下移動四列和向右移動三欄的儲存格範圍,您可以使用下列範例:
ActiveSheet.Range("Test").Offset(4, 3).Select
如果具名範圍是在另一個 (不是使用中) 工作表上,請先啟動該工作表,然後使用下列範例來選取範圍:
Sheets("Sheet3").Activate
ActiveSheet.Range("Test").Offset(4, 3).Select

13: 如何選取指定範圍和調整選取範圍大小

若要選取具名範圍 "Database",然後將選取範圍延伸五列,您可以使用下列範例:
Range("Database").Select
Selection.Resize(Selection.Rows.Count + 5, _
   Selection.Columns.Count).Select

14: 如何選取指定範圍、進行位移,然後調整大小

若要選取位於具名範圍 "Database" 下方四列和右邊三欄的範圍,並包括大於具名範圍兩列和一欄,您可以使用下列範例:
Range("Database").Select
Selection.Offset(4, 3).Resize(Selection.Rows.Count + 2, _
   Selection.Columns.Count + 1).Select

15: 如何選取兩個指定範圍以上的聯集

若要選取兩個具名範圍 "Test" 和 "Sample" 的聯集 (亦即合併區域),您可以使用下列範例:
Application.Union(Range("Test"), Range("Sample")).Select
請注意,這兩個範圍都必須在相同的工作表中,此範例才能正常運作。 另請注意,Union 方法無法同時在不同工作表之間使用。 例如,這一行沒有問題
Set y = Application.Union(Range("Sheet1!A1:B2"), Range("Sheet1!C3:D4"))
但這一行
Set y = Application.Union(Range("Sheet1!A1:B2"), Range("Sheet2!C3:D4"))
會傳回錯誤訊息:
Union method of application class failed (應用程式類別的 Union 方法失敗)

16: 如何選取兩個指定範圍以上的交集

若要選取兩個具名範圍 "Test" 和 "Sample" 的交集,您可以使用下列範例:
Application.Intersect(Range("Test"), Range("Sample")).Select
請注意,這兩個範圍都必須在相同的工作表中,此範例才能正常運作。 



本文中的範例 17-21 會參照下列範例資料集。 每一個範例都會陳述在範例資料中所選取的儲存格範圍。
   A1: Name    B1: Sales    C1: Quantity
   A2: a       B2: $10      C2: 5
   A3: b       B3:          C3: 10
   A4: c       B4: $10      C4: 5
   A5:         B5:          C5:
   A6: Total   B6: $20      C6: 20
 

17: 如何選取連續資料欄的最後一個儲存格

若要選取連續欄中的最後一個儲存格,請使用下列範例:
ActiveSheet.Range("a1").End(xlDown).Select
當這個程式碼與範例資料表搭配使用時,會選取儲存格 A4。


18: 如何選取連續資料欄下方的空白儲存格

若要選取連續儲存格範圍下面的儲存格,請使用下列範例:
ActiveSheet.Range("a1").End(xlDown).Offset(1,0).Select
當這個程式碼與範例資料表搭配使用時,會選取儲存格 A5。


19: 如何在欄中選取連續儲存格的整個範圍

若要在欄中選取連續儲存格範圍,請使用下列其中一個範例:
ActiveSheet.Range("a1", ActiveSheet.Range("a1").End(xlDown)).Select
   - 或 -
 
ActiveSheet.Range("a1:" & ActiveSheet.Range("a1"). _
      End(xlDown).Address).Select
當這個程式碼與範例資料表搭配使用時,會選取儲存格 A1 到 A4。 

20: 如何在欄中選取非連續儲存格的整個範圍

若要選取非連續的儲存格範圍,請使用下列其中一個範例:
ActiveSheet.Range("a1",ActiveSheet.Range("a65536").End(xlUp)).Select
   - 或 -
 
ActiveSheet.Range("a1:" & ActiveSheet.Range("a65536"). _
   End(xlUp).Address).Select
當這個程式碼與範例資料表搭配使用時,會選取儲存格 A1 到 A6。 

21: 如何選取矩形儲存格範圍

若要選取某儲存格四周的矩形儲存格範圍,請使用 CurrentRegion 方法。 透過 CurrentRegion 方法選取的範圍,是以任何組合的空白列與空白欄為邊界的區域。 下列範例說明如何使用 CurrentRegion 方法:
ActiveSheet.Range("a1").CurrentRegion.Select
這個程式碼會選取儲存格 A1 到 C4。 下面列出選取相同儲存格範圍的其他範例:
ActiveSheet.Range("a1", _
   ActiveSheet.Range("a1").End(xlDown).End(xlToRight)).Select
   - 或 -
 
ActiveSheet.Range("a1:" & _
   ActiveSheet.Range("a1").End(xlDown).End(xlToRight).Address).Select
在某些情況下,您可能需要選取儲存格 A1 到 C6。 在此範例中,CurrentRegion 方法沒有作用,因為第 5 列是空白行。 下列範例會選取所有儲存格:
lastCol = ActiveSheet.Range("a1").End(xlToRight).Column
lastRow = ActiveSheet.Cells(65536, lastCol).End(xlUp).Row
ActiveSheet.Range("a1", ActiveSheet.Cells(lastRow, lastCol)).Select
    - 或 -
 
lastCol = ActiveSheet.Range("a1").End(xlToRight).Column
lastRow = ActiveSheet.Cells(65536, lastCol).End(xlUp).Row
ActiveSheet.Range("a1:" & _
   ActiveSheet.Cells(lastRow, lastCol).Address).Select

22: 如何選取不同長度的多個非連續欄

若要選取不同長度的多個非連續欄,請使用下列範例資料表和巨集範例:
   A1: 1  B1: 1  C1: 1  D1: 1
   A2: 2  B2: 2  C2: 2  D2: 2
   A3: 3  B3: 3  C3: 3  D3: 3
   A4:    B4: 4  C4: 4  D4: 4
   A5:    B5: 5  C5: 5  D5:
   A6:    B6:    C6: 6  D6:
 
StartRange = "A1"
EndRange = "C1"
Set a = Range(StartRange, Range(StartRange).End(xlDown))
Set b = Range(EndRange, Range(EndRange).End(xlDown))
Union(a,b).Select
當這個程式碼與範例資料表搭配使用時,會選取儲存格 A1:A3 和 C1:C6。

範例的注意事項

  • 通常可以省略 ActiveSheet 屬性,因為如果未命名特定工作表,則會隱含該屬性。 例如,與其使用
    ActiveSheet.Range("D5").Select
    您可以使用:
    Range("D5").Select
  • 通常也可以省略 ActiveWorkbook 屬性。 除非已命名特定活頁簿,否則會隱含使用中的活頁簿。
  • 使用 Application.Goto 方法時,當指定的範圍是在另一個 (不是使用中) 工作表的情況下,如果要在 Range 方法內使用兩個 Cells 方法,則每次都必須包括 Sheets 物件。 例如:
    Application.Goto Sheets("Sheet1").Range( _
          Sheets("Sheet1").Range(Sheets("Sheet1").Cells(2, 3), _
          Sheets("Sheet1").Cells(4, 5)))
  • 針對引號中的任何項目而言 (例如,具名範圍 "Test"),您也可以使用其值是文字字串的變數。 例如,與其使用
    ActiveWorkbook.Sheets("Sheet1").Activate
    您可以使用
    ActiveWorkbook.Sheets(myVar).Activate
    其中 myVar 的值是 "Sheet1"。

2017年4月7日 星期五

excel數字轉大寫中文


儲存格格式→數值→自訂→類型 輸入
[DBNum2]G/通用格式"元""整"

其他格式:
[DBNum1]:顯示一、二、三、四 …
[DBNum2]:顯示壹、貳、参、肆 …
[DBNum3]:顯示1、2、3、4 …
[DBNum4]:顯示1、2、3、4 …

2016年8月15日 星期一

Excel 2010 開啟 Excel 2003 檔案時出現檔案毀損錯誤訊息,該如何處理?

from:
https://dotblogs.com.tw/chou/archive/2011/05/30/26621.aspx


一、問題描述

使用 Excel 2010 開啟 Excel 2003 檔案時,出現檔案毀損的錯誤訊息,但使用 Excel 2003 或 2007 開啟檔案則沒有問題,該如何處理?

二、方法

狀況1. Excel 檔案格式在 Excel 2010 不支援
請參考 Excel 中支援的檔案格式 檢查 Excel 檔案格式在 Excel 2010 是否支援,像是 Excel 2.1(97) 版本的格式,在 Excel 2010 可能開不起來。
此時可透過 Excel 2007 或 Excel 2003 另存檔案格式,讓 Excel 2010 可以處理。或者在 Excel 2010 中,按 [檔案] / [開啟舊檔] / [開啟並修復],以及 [檔案] / [開啟舊檔] / [抽選資料] 轉換數值開啟看看。

狀況2. Excel 檔案可能有危險
可能您的 Excel 2003 檔案內容有一些可能會有危害的檔案,因此 Excel 2010 以限制模式開啟 Excel 2003 檔案時會出現檔案毀損錯誤訊息,假如您信任該檔案的話,請參考以下步驟調整 Excel 2010 設定。
1. 開啟 Excel,按 [檔案],[選項]。
2. 此時出現 [Excel 選項] 視窗,選擇 [信任中心] 頁籤,點選 [信任中心設定] 按鈕。
3. 此時出現 [信任中心] 視窗,將右邊受保護檢視的相關選項取消勾選,按 [確定] 儲存設定。
4. 重新開啟 Excel 檔案,測試看看是否能順利開啟。

2016年7月19日 星期二

使用函數將文字分成幾欄

source: https://support.office.com/zh-tw/article/%E4%BD%BF%E7%94%A8%E5%87%BD%E6%95%B8%E5%B0%87%E6%96%87%E5%AD%97%E5%88%86%E6%88%90%E5%B9%BE%E6%AC%84-c2930414-9678-49d7-89bc-1bf66e219ea8
函數
語法
LEFT(text, num_chars)
MID(text,start_num,num_chars)
RIGHT(text, num_chars)
SEARCH(find_text,within_text,start_num)
LEN(text)

範例 1:Jeff Smith

在此範例中,只有兩個元件:名字與姓氏。這兩個名稱元件是由一個空格分隔。
1
2
A
B
C
全名
名字
姓氏
Jeff Smith
=LEFT(A2, SEARCH(" ",A2,1))
=RIGHT(A2,LEN(A2)-SEARCH(" ",A2,1))
在下列圖形中,全名中醒目提示的部分就是 SEARCH 公式所尋找的字元。

名字

名字的開頭是字串的第一個字元 (J),結尾是第五個字元 (空格)。公式會傳回 A2 中從左算起的五個字元。
用於擷取名字的公式
使用 SEARCH 函數尋找 num_chars 的值:
在 A2 中搜尋空格的數值位置,從左邊開始算起。(5)

姓氏

姓氏的開頭是空格,離右邊有五個字元,結尾是最後一個字元 (h)。公式擷取的是 A2 裡從右邊開始算起的五個字元。
用於擷取姓氏的公式
使用 SEARCH 與 LEN 函數尋找 num_chars 的值:
在 A2 中搜尋空格的數值位置,從左邊開始算起。(5)
計算文字字串的總長度,然後減去步驟 1 所得出之從左到第一個空格的字元數。(10 - 5 = 5)

範例 2:Eric S. Kurjan

在此範例中,全名中有三個元件:名字、中間名縮寫,以及姓氏。每個名稱元件之間以空格分隔。
1
2
A
B
C
D
姓名
名字 (Eric)
中間名 (S.)
姓氏 ( Kurjan )
Eric S. Kurjan
=LEFT(A2, SEARCH(" ",A2,1))
=MID(A2,SEARCH(" ",A2,1)+1,SEARCH(" ",A2,SEARCH(" ",A2,1)+1)-SEARCH(" ",A2,1))
=RIGHT(A2,LEN(A2)-SEARCH(" ",A2,SEARCH(" ",A2,1)+1))
在下列圖形中,全名中醒目提示的部分就是 SEARCH 公式所尋找的字元。

名字

名字的開頭是從左邊數來的第一個字元 (E),結尾是第五個字元 (即第一個空格)。公式擷取的是 A2 裡從左邊開始算起的前五個字元。
用於分隔名字、姓氏與中間名縮寫的公式
使用 SEARCH 函數尋找 num_chars 的值:
在 A2 中搜尋第一個空格的數值位置,從左邊開始算起。(5)

中間名

中間名的開頭是第六個字元位置 (S),結尾是第八個位置 (即第二個空格)。此公式使用巢狀 SEARCH 函數,尋找第二個空格實例。
公式擷取的是從第六個位置開始算起的三個字元。
用於分隔名字、中間名及姓氏的公式細節
使用 SEARCH 函數尋找 start_num 的值:
在 A2 中搜尋第一個空格的數值位置,從左邊第一個字元開始算起。(5)
加 1 可得出第一個空格後的字元 (S) 位置。此數值位置是中間名的起始位置。(5 + 1 = 6)
使用巢狀 SEARCH 函數尋找 num_chars 的值:
在 A2 中搜尋第一個空格的數值位置,從左邊第一個字元開始算起。(5)
加 1 可得出第一個空格後的字元 (S) 位置。結果得出一字元數,可從該字元數位置開始搜尋第二個空格實例。(5 + 1 = 6)
在 A2 中搜尋第二個空格實例,從步驟 4 得出之第六個位置 (S) 開始算起。此字元數是中間名的結尾位置。(8)
在 A2 中搜尋空格的數值位置,從左邊第一個字元開始算起。(5)
用步驟 5 得出之第二個空格之字元數,減去步驟 6 得出之第一個空格的字元數。結果得出 MID 從文字字串所擷取的字元數,從步驟 2 得出之第六個位置開始算起。(8 – 5 = 3)

姓氏

姓氏的開頭是從右邊數來的第六個字元 (K),結尾是右邊數來的第一個字元 (n)。此公式使用巢狀 SEARCH 函數,尋找第二個及第三個空格實例 (即是從左邊數來的第五個和第八個位置)。
公式擷取的是 A2 裡從右邊開始算起的六個字元。
用於分隔名字、中間名及姓氏之公式中的第二個 Search 函數
使用 LEN 及巢狀 SEARCH 函數尋找 num_chars 的值:
在 A2 中搜尋空格的數值位置,從左邊第一個字元開始算起。(5)
加 1 可得出第一個空格後的字元 (S) 位置。結果得出一字元數,可從該字元數位置開始搜尋第二個空格實例。(5 + 1 = 6)
在 A2 中搜尋第二個空格實例,從步驟 2 得出之第六個位置 (S) 開始算起。此字元數是中間名的結尾位置。(8)
計算 A2 中文字字串的總長度,然後減去步驟 3 得出之從左邊算到第二個空格實例的字元數。結果得出從全名右邊所擷取的字元數。(14 – 8 = 6。

範例 3:Janaina B. G. Bueno

在此範例中,有兩個中間名縮寫。名稱元件是由第一個和第三個空格實例分隔。
1
2
A
B
C
D
姓名
名字 (Janaina )
中間名 (B. G.)
姓氏 ( Bueno )
Janaina B. G. Bueno
=LEFT(A2, SEARCH(" ",A2,1))
=MID(A2,SEARCH(" ",A2,1)+1,SEARCH(" ",A2,SEARCH(" ",A2,SEARCH(" ",A2,1)+1)+1)-SEARCH(" ",A2,1))
=RIGHT(A2,LEN(A2)-SEARCH(" ",A2,SEARCH(" ",A2,SEARCH(" ",A2,1)+1)+1))
在下列圖形中,全名中醒目提示的部分就是 SEARCH 公式所尋找的字元。

名字

名字的開頭是從左邊數來的第一個字元 (J),結尾是第八個字元 (即第一個空格)。公式擷取的是 A2 裡從左邊開始算起的前八個字元。
用於分隔名字、姓氏及兩個中間名縮寫的公式
使用 Search 函數尋找 num_chars 的值:
在 A2 中搜尋第一個空格的數值位置,從左邊開始算起。(8)

中間名

中間名的開頭是第九個位置 (B),結尾是第十四個位置 (即第三個空格)。此公式使用巢狀 SEARCH 函數,尋找分別位於第八個、第十一個及第十四個位置的第一個、第二個及第三個空格實例。
公式擷取的是從第九個位置開始算起的五個字元。
用於分隔名字、姓氏及兩個中間名縮寫的公式
使用 SEARCH 函數尋找 start_num 的值:
在 A2 中搜尋第一個空格的數值位置,從左邊第一個字元開始算起。(8)
加 1 可得出第一個空格後的字元 (B) 位置。此數值位置是中間名的起始位置。(8 + 1 = 9)
使用巢狀 SEARCH 函數尋找 num_chars 的值:
在 A2 中搜尋第一個空格的數值位置,從左邊第一個字元開始算起。(8)
加 1 可得出第一個空格後的字元 (B) 位置。結果得出一字元數,可從該字元數位置開始搜尋第二個空格實例。(8 + 1 = 9)
在 A2 中搜尋第二個空格,從步驟 4 得出之第九個位置 (B) 開始算起。(11)
加 1 可得出第一個空格後的字元 (G) 位置。這個字元數是一起始位置,您從這裡開始搜尋第三個空格。(11 + 1 = 12)
在 A2 中搜尋第三個空格,從步驟 6 得出之第十二個位置開始算起。(14)
在 A2 中搜尋第一個空格的數值位置。(8)
用步驟 7 得出之第三個空格之字元數,減去步驟 6 得出之第一個空格的字元數。結果得出 MID 從文字字串擷取的字元數,從步驟 2 得出之第九個位置開始算起。

姓氏

姓氏的開頭是從右邊數來的第五個字元 (B),結尾是右邊數來的第一個字元 (o)。此公式使用巢狀 SEARCH 函數,尋找第一個、第二個和第三個空格實例。
公式會擷取 A2 裡從全名的右邊開始算起的五個字元。
用於分隔名字、姓氏及兩個中間名縮寫的公式
使用巢狀 SEARCH 及 LEN 函數尋找 num_chars 的值:
在 A2 中搜尋第一個空格的數值位置,從左邊第一個字元開始算起。(8)
加 1 可得出第一個空格後的字元 (B) 位置。結果得出一字元數,可從該字元數位置開始搜尋第二個空格實例。(8 + 1 = 9)
在 A2 中搜尋第二個空格,從步驟 2 得出之第九個位置 (B) 開始算起。(11)
加 1 可得出第一個空格後的字元 (G) 位置。這個字元數是一起始位置,您從這裡開始搜尋第三個空格實例。(11 + 1 = 12)
在 A2 中搜尋第三個空格,從步驟 6 得出之第十二個位置開始算起。(14)
計算 A2 裡文字字串的總長度,然後減去步驟 5 得出之從左邊算到第三個空格的字元數。結果得出從全名右邊所擷取的字元數。(19 - 14 = 5)

範例 4:Kahn, Wendy Beth

在此範例中,姓氏在名字之前,而中間名出現在最後。逗號代表姓氏的結尾,每個名稱元件之間以空格分隔。
1
2
A
B
C
D
姓名
名字 (Wendy)
中間名 (Beth)
姓氏 (Kahn)
Kahn, Wendy Beth
=MID(A2,SEARCH(" ",A2,1)+1,SEARCH(" ",A2,SEARCH(" ",A2,1)+1)-SEARCH(" ",A2,1))
=RIGHT(A2,LEN(A2)-SEARCH(" ",A2,SEARCH(" ",A2,1)+1))
=LEFT(A2, SEARCH(" ",A2,1)-2)
在下列圖形中,全名中醒目提示的部分就是 SEARCH 公式所尋找的字元。

名字

名字的開頭是從左邊數來的第七個字元 (W),結尾是第十二個字元 (即第二個空格)。由於名字出現在全名的中間,因此您必須使用 MID 函數來擷取名字。
公式擷取的是從第七個位置開始算起的六個字元。
用於分隔姓氏後接名字和中間名的公式
使用 SEARCH 函數尋找 start_num 的值:
在 A2 中搜尋第一個空格的數值位置,從左邊第一個字元開始算起。(6)
加 1 可得出第一個空格後的字元 (W) 位置。此數值位置是名字的起始位置。(6 + 1 = 7)
使用巢狀 SEARCH 函數尋找 num_chars 的值:
在 A2 中搜尋第一個空格的數值位置,從左邊第一個字元開始算起。(6)
加 1 可得出第一個空格後的字元 (W) 位置。結果得出一字元數,可從該字元數位置開始搜尋第二個空格。(6 + 1 = 7)
在 A2 中搜尋第二個空格,從步驟 4 得出之第七個位置 (W) 開始算起。(12)
在 A2 中搜尋第一個空格的數值位置,從左邊第一個字元開始算起。(6)
用步驟 5 得出之第二個空格之字元數,減去步驟 6 得出之第一個空格的字元數。結果得出 MID 從文字字串擷取的字元數,從步驟 2 得出之第七個位置開始算起。(12 - 6 = 6)

中間名

中間名的開頭是從右邊數來的第四個字元 (B),結尾是右邊數來的第一個字元 (h)。此公式使用巢狀 SEARCH 函數,從左邊開始尋找分別位於第六個及第十二個位置的第一個及第二個空格實例。
公式擷取的是從右邊開始算起的四個字元。
用於分隔姓氏後接名字和中間名的公式
使用巢狀 SEARCH 及 LEN 函數尋找 start_num 的值:
在 A2 中搜尋第一個空格的數值位置,從左邊第一個字元開始算起。(6)
加 1 可得出第一個空格後的字元 (W) 位置。結果得出一字元數,可從該字元數位置開始搜尋第二個空格。(6 + 1 = 7)
在 A2 中搜尋第二個空格實例,從步驟 2 得出之第七個位置 (W) 開始算起。(12)
計算 A2 裡文字字串的總長度,然後減去步驟 3 得出之從左邊算到第二個空格的字元數。結果得出從全名右邊所擷取的字元數。(16 - 12 = 4)

姓氏

姓氏的開頭是從左邊數來的第一個字元 (K),結尾是第四個字元 (n)。公式擷取的是從左邊開始算起的四個字元。
用於分隔姓氏後接名字和中間名的公式
使用 SEARCH 函數尋找 num_chars 的值:
在 A2 中搜尋第一個空格的數值位置,從左邊第一個字元開始算起。(6)
減 2 以取得姓氏結尾字元 (n) 的數值位置。結果得出 LEFT 要抽選的字元數。(6 - 2 =4)

範例 5:Mary Kay D. Andersen

在此範例中,名字包含兩個部分:Mary Kay。由第二個和第三個空格分隔每個名稱元件。
1
2
A
B
C
D
姓名
名字 (Mary Kay)
中間名 (D.)
姓氏 (Andersen)
Mary Kay D. Anderson
=LEFT(A2, SEARCH(" ",A2,SEARCH(" ",A2,1)+1))
=MID(A2,SEARCH(" ",A2,SEARCH(" ",A2,1)+1)+1,SEARCH(" ",A2,SEARCH(" ",A2,SEARCH(" ",A2,1)+1)+1)-(SEARCH(" ",A2,SEARCH(" ",A2,1)+1)+1))
=RIGHT(A2,LEN(A2)-SEARCH(" ",A2,SEARCH(" ",A2,SEARCH(" ",A2,1)+1)+1))
在下列圖形中,全名中醒目提示的部分就是 SEARCH 公式所尋找的字元。

名字

名字的開頭是從左邊數來的第一個字元,結尾是第九個字元 (即第二個空格)。此公式使用巢狀 SEARCH 函數,尋找左邊數來的第二個空格實例。
公式擷取的是從左邊開始算起的九個字元。
用於分隔名字、中間名縮寫及姓氏的公式
使用巢狀 SEARCH 函數尋找 num_chars 的值:
在 A2 中搜尋第一個空格的數值位置,從左邊第一個字元開始算起。(5)
加 1 可得出第一個空格後的字元 (K) 位置。結果得出一字元數,可從該字元數位置開始搜尋第二個空格實例。(5 + 1 = 6)
在 A2 中搜尋第二個空格實例,從步驟 2 得出之第六個位置 (S) 開始算起。結果得出 LEFT 從文字字串所擷取的字元數。(9)

中間名

中間名的開頭是第十個位置 (D),結尾是第十二個位置 (即第三個空格)。此公式使用巢狀 SEARCH 函數,尋找第一個、第二個和第三個空格實例。
公式擷取的是從第十個位置開始算起的中間兩個字元。
用於分隔名字、中間名縮寫及姓氏的公式
使用巢狀 SEARCH 函數尋找 start_num 的值:
在 A2 中搜尋第一個空格的數值位置,從左邊第一個字元開始算起。(5)
加 1 可得出第一個空格後的字元 (K) 位置。結果得出一字元數,可從該字元數位置開始搜尋第二個空格。(5 + 1 = 6)
在 A2 中搜尋第二個空格實例的位置,從步驟 2 得出之第六個位置 (K) 開始算起。結果得出 LEFT 從左邊所擷取的字元數。(9)
加 1 可得出第二個空格後的字元 (D) 位置。結果得出中間名的起始位置。(9 + 1 = 10)
使用巢狀 SEARCH 函數尋找 num_chars 的值:
搜尋第二個空格後之字元 (D) 的數值位置。結果得出一字元數,可從該字元數位置開始搜尋第三個空格。(10)
在 A2 中搜尋第三個空格的數值位置,從左邊開始算起。結果得出中間名的結尾位置。(12)
搜尋第二個空格後之字元 (D) 的數值位置。結果得出中間名的起始位置。(10)
用步驟 6 得出之第三個空格之字元數,減去步驟 7 得出之 "D" 的字元數。結果得出 MID 從文字字串擷取的字元數,從步驟 4 得出之第十個位置開始算起。(12 - 10 = 2)

姓氏

姓氏的開頭是從右數來的第八個字元。此公式使用巢狀 SEARCH 函數,尋找分別在第五個、第九個及第十二個位置的第一個、第二個及第三個空格。
公式擷取的是從右邊算起的八個字元。
用於分隔名字、中間名縮寫及姓氏的公式
使用巢狀 SEARCH 及 LEN 函數尋找 num_chars 的值:
在 A2 中搜尋第一個空格的數值位置,從左邊開始算起。(5)
加 1 可得出第一個空格後的字元 (K) 位置。結果得出一字元數,可從該字元數位置開始搜尋空格。(5 + 1 = 6)
在 A2 中搜尋第二個空格,從步驟 2 得出之第六個位置 (K) 開始算起。(9)
加 1 可得出第二個空格後的字元 (D) 位置。結果得出中間名的起始位置。(9 + 1 = 10)
在 A2 中搜尋第三個空格的數值位置,從左邊開始算起。結果得出中間名的結尾位置。(12)
計算 A2 裡文字字串的總長度,然後減去步驟 5 得出之從左邊算到第三個空格的字元數。結果得出從全名右邊所擷取的字元數。(20 - 12 = 8)

範例 6:Paula Barreto de Mattos

在此範例中,姓氏包含三個部分:Barreto de Mattos。第一個空格代表名字的結尾與姓氏的開頭。
1
2
A
B
D
姓名
名字 (Paula)
姓氏 ( Barreto de Mattos )
Paula Barreto de Mattos
=LEFT(A2, SEARCH(" ",A2,1))
=RIGHT(A2,LEN(A2)-SEARCH(" ",A2,1))
在下列圖形中,全名中醒目提示的部分就是 SEARCH 公式所尋找的字元。

名字

名字的開頭是從左邊數來的第一個字元 (P),結尾是第六個字元 (即第一個空格)。公式擷取的是從左邊算起的六個字元。
用於分隔名字及由三部分組成之姓氏的公式
使用 Search 函數尋找 num_chars 的值:
在 A2 中搜尋第一個空格的數值位置,從左邊開始算起。(6)

姓氏

姓氏的開頭是從右邊數來的第十七個字元 (B),結尾是右邊數來的第一個字元 (s)。公式擷取的是從右邊開始算起的十七個字元。
用於分隔名字及由三部分組成之姓氏的公式
使用 LEN 及 SEARCH 函數尋找 num_chars 的值:
在 A2 中搜尋第一個空格的數值位置,從左邊開始算起。(6)
計算 A2 裡文字字串的總長度,然後減去步驟 1 得出之從左邊算到第一個空格的字元數。結果得出從全名右邊所擷取的字元數。(23 - 6 = 17)

範例 7:James van Eaton

在此範例中,姓氏包含兩個部分:van Eaton。第一個空格代表名字的結尾與姓氏的開頭。
1
2
A
B
D
姓名
名字 (James)
姓氏 (van Eaton)
James van Eaton
=LEFT(A2, SEARCH(" ",A2,1))
=RIGHT(A2,LEN(A2)-SEARCH(" ",A2,1))
在下列圖形中,全名中醒目提示的部分就是 SEARCH 公式所尋找的字元。

名字

名字的開頭是從左邊數來的第一個字元 (J),結尾是第八個字元 (即第一個空格)。公式擷取的是從左邊算起的六個字元。
用於分隔名字及由兩部分組成之姓氏的公式
使用 Search 函數尋找 num_chars 的值:
在 A2 中搜尋第一個空格的數值位置,從左邊開始算起。(6)

姓氏

姓氏的開頭是從右邊數來的第九個字元 (v),結尾是右邊數來的第一個字元 (n)。公式擷取的是從全名的右邊開始算起的九個字元。
用於分隔名字及由兩部分組成之姓氏的公式
使用 LEN 及 SEARCH 函數尋找 num_chars 的值:
在 A2 中搜尋第一個空格的數值位置,從左邊開始算起。(6)
計算 A2 裡文字字串的總長度,然後減去步驟 1 得出之從左邊算到第一個空格的字元數。結果得出從全名右邊所擷取的字元數。(15 - 6 = 9)

範例 8:Bacon Jr., Dan K.

在此範例中,姓氏在最前面,後面接的是後稱謂。姓氏和後稱謂,名字和中間名縮寫,則是以逗號隔開。
1
2
A
B
C
D
E
姓名
名字 (Dan)
中間名 (K.)
姓氏 (Bacon)
後稱謂 (Jr.)
Bacon Jr., Dan K.
=MID(A2,SEARCH(" ",A2,SEARCH(" ",A2,1)+1)+1,SEARCH(" ",A2,SEARCH(" ",A2,SEARCH(" ",A2,1)+1)+1)-SEARCH(" ",A2,SEARCH(" ",A2,1)+1))
=RIGHT(A2,LEN(A2)-SEARCH(" ",A2,SEARCH(" ",A2,SEARCH(" ",A2,1)+1)+1))
=LEFT(A2, SEARCH(" ",A2,1))
=MID(A2,SEARCH(" ", A2,1)+1,(SEARCH(" ",A2,SEARCH(" ",A2,1)+1)-2)-SEARCH(" ",A2,1))
在下列圖形中,全名中醒目提示的部分就是 SEARCH 公式所尋找的字元。

名字

名字的開頭是第十二個字元 (D),結尾是第十五個字元 (即第三個空格)。公式擷取的是從第十二個位置開始算起的三個字元。
用於擷取「範例 8:Bacon Jr., Dan K.」之名字的公式
使用巢狀 SEARCH 函數尋找 start_num 的值:
在 A2 中搜尋第一個空格的數值位置,從左邊開始算起。(6)
加 1 可得出第一個空格後的字元 (J) 位置。結果得出一字元數,可從該字元數位置開始搜尋第二個空格。(6 + 1 = 7)
在 A2 中搜尋第二個空格,從步驟 2 得出之第七個位置 (J) 開始算起。(11)
加 1 可得出第二個空格後的字元 (D) 位置。結果得出名字的起始位置。(11 + 1 = 12)
使用巢狀 SEARCH 函數尋找 num_chars 的值:
搜尋第二個空格後之字元 (D) 的數值位置。結果得出一字元數,可從該字元數位置開始搜尋第三個空格。(12)
在 A2 中搜尋第三個空格的數值位置,從左邊開始算起。結果得出名字的結尾位置。(15)
搜尋第二個空格後之字元 (D) 的數值位置。結果得出名字的起始位置。(12)
用步驟 6 得出之第三個空格之字元數,減去步驟 7 得出之 "D" 的字元數。結果得出 MID 從文字字串擷取的字元數,從步驟 4 得出之第十二個位置開始算起。(15 - 12 = 3)

中間名

中間名的開頭是從右邊數來的第二個字元 (K)。公式擷取的是從右邊開始算起的兩個字元。
用於擷取「範例 8:Bacon Jr., Dan K.」之中間名的公式
使用巢狀 SEARCH 函數尋找 num_chars 的值:
在 A2 中搜尋第一個空格的數值位置,從左邊開始算起。(6)
加 1 可得出第一個空格後的字元 (J) 位置。結果得出一字元數,可從該字元數位置開始搜尋第二個空格。(6 + 1 = 7)
在 A2 中搜尋第二個空格,從步驟 2 得出之第七個位置 (J) 開始算起。(11)
加 1 可得出第二個空格後的字元 (D) 位置。結果得出名字的起始位置。(11 + 1 = 12)
在 A2 中搜尋第三個空格的數值位置,從左邊開始算起。結果得出中間名的結尾位置。(15)
計算 A2 裡文字字串的總長度,然後減去步驟 5 得出之從左邊算到第三個空格的字元數。結果得出從全名右邊所擷取的字元數。(17 - 15 = 2)

姓氏

姓氏的開頭是從左邊數來的第一個字元 (B),結尾是第六個字元 (即第一個空格)。因此,公式擷取的是從左邊算起的六個字元。
用於擷取「範例 8:Bacon Jr., Dan K.」之姓氏的公式
使用 Search 函數尋找 num_chars 的值:
在 A2 中搜尋第一個空格的數值位置,從左邊開始算起。(6)

後稱謂

後稱謂的開頭是從左邊數來的第七個字元 (J),結尾是左邊數來的第九個字元 (.)。公式擷取的是從第七個字元開始算起的三個字元。
用於擷取「範例 8:Bacon Jr., Dan K.」之後稱謂的公式
使用 SEARCH 函數尋找 start_num 的值:
在 A2 中搜尋第一個空格的數值位置,從左邊開始算起。(6)
加 1 可得出第一個空格後的字元 (J) 位置。結果得出後稱謂的起始位置。(6 + 1 = 7)
使用巢狀 SEARCH 函數尋找 num_chars 的值:
在 A2 中搜尋第一個空格的數值位置,從左邊開始算起。(6)
加 1 可得出第一個空格後的字元 (J) 之數值位置。結果得出一字元數,可從該字元數位置開始搜尋第二個空格。(7)
在 A2 中搜尋第二個空格的數值位置,從步驟 4 得出之第七個字元開始算起。(11)
步驟 4 得出之第二個空格的字元數減去 1,即可取得 "," 的字元數。結果得出後稱謂的結尾位置。(11 - 1 = 10)
搜尋第一個空格後之字元 (J) 的數值位置,這亦可在步驟 3 及步驟 4 中得出。(7)
搜尋第一個空格後之字元 (J) 的數值位置,這亦可在步驟 3 及步驟 4 中得出。(7)
用步驟 6 得出之 "," 的字元數,減去步驟 3 及 4 得出之 "J" 的字元數。結果得出 MID 從文字字串擷取的字元數,從步驟 2 得出之第七個位置開始算起。(10 - 7 = 3)

範例 9:Gary Altman III

在此範例中,名字是在字串的開頭,而後稱謂是在姓名的結尾。用於名稱元件的公式與範例 2 類似,其中可以使用 LEFT 函數來抽選名字、使用 MID 函數來抽選姓氏,以及使用 RIGHT 函數來抽選後稱謂。
1
2
A
B
C
D
姓名
名字 (Gary)
姓氏 (Altman)
後稱謂 (III)
Gary Altman III
=LEFT(A2, SEARCH(" ",A2,1))
=MID(A2,SEARCH(" ",A2,1)+1,SEARCH(" ",A2,SEARCH(" ",A2,1)+1)-(SEARCH(" ",A2,1)+1))
=RIGHT(A2,LEN(A2)-SEARCH(" ",A2,SEARCH(" ",A2,1)+1))
在下列圖形中,全名中醒目提示的部分就是 SEARCH 公式所尋找的字元。

名字

名字的開頭是從左邊數來的第一個字元 (G),結尾是第五個字元 (即第一個空格)。因此,公式擷取的是從全名的左邊開始算起的五個字元。
用於分隔名字、姓氏及稱謂的公式
在 A2 中搜尋第一個空格的數值位置,從左邊開始算起。(5)

姓氏

姓氏的開頭是從左邊數來的第六個字元 (A),結尾是第十一個字元 (即第二個空格)。此公式使用巢狀 SEARCH 函數,尋找空格的位置。
公式擷取的是從第六個字元開始算起的中間六個字元。
用於分隔名字、姓氏及稱謂的公式
使用 SEARCH 函數尋找 start_num 的值:
在 A2 中搜尋第一個空格的數值位置,從左邊開始算起。(5)
加 1 可得出第一個空格後的字元 (A) 位置。結果得出姓氏的起始位置。(5 + 1 = 6)
使用巢狀 SEARCH 函數尋找 num_chars 的值:
在 A2 中搜尋第一個空格的數值位置,從左邊開始算起。(5)
加 1 可得出第一個空格後的字元 (A) 位置。結果得出一字元數,可從該字元數位置開始搜尋第二個空格。(5 + 1 = 6)
在 A2 中搜尋第二個空格的數值位置,從步驟 4 得出之第六個字元開始算起。此字元數是姓氏的結尾位置。(12)
搜尋第一個空格後之字元 (A) 的數值位置,這亦可在步驟 3 及步驟 4 中得出。(6)
搜尋第一個空格後之字元 (A) 的數值位置,這亦可在步驟 3 及步驟 4 中得出。(6)
用步驟 5 得出之第二個空格的字元數,減去步驟 6 及 7 得出之 "A" 的字元數。結果得出 MID 從文字字串擷取的字元數,從步驟 2 得出之第六個位置開始算起。(12 - 6 = 6)

後稱謂

後稱謂的開頭是從右邊開始算起的三個字元。此公式使用巢狀 SEARCH 函數,尋找空格的位置。
用於分隔名字、姓氏及稱謂的公式
使用巢狀 SEARCH 及 LEN 函數尋找 num_chars 的值:
在 A2 中搜尋第一個空格的數值位置,從左邊開始算起。(5)
加 1 可得出第一個空格後的字元 (A) 位置。結果得出一字元數,可從該字元數位置開始搜尋第二個空格。(5 + 1 = 6)
在 A2 中搜尋第二個空格,從步驟 2 得出之第六個位置 (A) 開始算起。(12)
計算 A2 裡文字字串的總長度,然後減去步驟 3 得出之從左邊算到第二個空格的字元數。結果得出從全名右邊所擷取的字元數。(15 - 12 = 3)

範例 10:Mr. Ryan Ihrig

在此範例中,全名的前面有加上前稱謂。用於名稱元件的公式與範例 2 類似,其中可以使用 MID 函數來抽選名字,以及使用 RIGHT 函數來抽選姓氏。
1
2
A
B
C
姓名
名字 (Ryan)
姓氏 ( Ihrig )
Mr. Ryan Ihrig
=MID(A2,SEARCH(" ",A2,1)+1,SEARCH(" ",A2,SEARCH(" ",A2,1)+1)-(SEARCH(" ",A2,1)+1))
=RIGHT(A2,LEN(A2)-SEARCH(" ",A2,SEARCH(" ",A2,1)+1))
在下列圖形中,全名中醒目提示的部分就是 SEARCH 公式所尋找的字元。

名字

名字的開頭是從左邊算起的第五個字元 (R),結尾是第九個字元 (即第二個空格)。此公式涉及將 SEARCH 函數放在巢狀結構中來尋找空格的位置。
此公式會從第五個位置算起抽選四個字元。
用於擷取「範例 10:Mr. Ryan Ihrig」之名字的公式
使用 SEARCH 函數尋找 start_num 的值:
在 A2 中搜尋第一個空格的數值位置,從左邊開始算起。(4)
加 1 可得出第一個空格後的字元 (R) 位置。結果得出名字的起始位置。(4 + 1 = 5)
使用巢狀 SEARCH 函數尋找 num_chars 的值:
在 A2 中搜尋第一個空格的數值位置,從左邊開始算起。(4)
加 1 可得出第一個空格後的字元 (R) 位置。結果得出一字元數,可從該字元數位置開始搜尋第二個空格。(4 + 1 = 5)
在 A2 中搜尋第二個空格的數值位置,從步驟 3 及 4 得出之第五個字元開始算起。此字元數是名字的結尾位置。(9)
搜尋第一個空格後之字元 (R) 的數值位置,這亦可在步驟 3 及步驟 4 中得出。(5)
搜尋第一個空格後之字元 (R) 的數值位置,這亦可在步驟 3 及步驟 4 中得出。(5)
用步驟 5 得出之第二個空格的字元數,減去步驟 6 及 7 得出之 "R" 的字元數。結果得出 MID 從文字字串所擷取的字元數,從步驟 2 得出之第五個位置開始算起。(9 - 5 = 4)

姓氏

姓氏的開頭是從右邊開始算起的第五個字元。此公式使用巢狀 SEARCH 函數,尋找空格的位置。
用於擷取「範例 10:Mr. Ryan Ihrig」之姓氏的公式
使用巢狀 SEARCH 及 LEN 函數尋找 num_chars 的值:
在 A2 中搜尋第一個空格的數值位置,從左邊開始算起。(4)
加 1 可得出第一個空格後的字元 (R) 位置。結果得出一字元數,可從該字元數位置開始搜尋第二個空格。(4 + 1 = 5)
在 A2 中搜尋第二個空格,從步驟 2 得出之第五個位置 (R) 開始算起。(9)
計算 A2 裡文字字串的總長度,然後減去步驟 3 得出之從左邊算到第二個空格的字元數。結果得出從全名右邊所擷取的字元數。(14 - 9 = 5)

範例 11:Julie Taft-Rider

在此範例中,姓氏包含連字號。每個名稱元件之間以空格分隔。
1
2
A
B
C
姓名
名字 (Julie)
姓氏 (Taft-Rider)
Julie Taft-Rider
=LEFT(A2, SEARCH(" ",A2,1))
=RIGHT(A2,LEN(A2)-SEARCH(" ",A2,1))
在下列圖形中,全名中醒目提示的部分就是 SEARCH 公式所尋找的字元。

名字

名字的開頭是從左邊數來的第一個字元,結尾是第六個位置 (即第一個空格)。公式擷取的是從左邊算起的六個字元。
用於擷取「範例 11:Julie Taft-Rider」之名字的公式
使用 SEARCH 函數尋找 num_chars 的值:
在 A2 中搜尋第一個空格的數值位置,從左邊開始算起。(6)

姓氏

整個姓氏的開頭是從右邊數來的第十個字元 (T),結尾是右邊的第一個字元 (r)。
用於擷取「範例 11:Julie Taft-Rider」之完整姓氏的公式
使用 LEN 及 SEARCH 函數尋找 num_chars 的值:
在 A2 中搜尋空格的數值位置,從左邊第一個字元開始算起。(6)
計算欲擷取之文字字串的總長度,然後減去步驟 1 得出之從左邊算到第一個空格的字元數。(16 - 6 = 10)