簡體   English   中英

使用后綴重新排序名稱的各個部分

[英]Reorder parts of a name with a suffix

我需要 vba 代碼的幫助來重新排序名稱的各個部分。 有時有一個后綴(Jr、Sr、I、II、III、IV),那是我想不通的部分。 沒有我需要遍歷的列表。 名稱的元素可能如下所示:Johnson, Joseph Allen Jr
此代碼用於將姓氏移到末尾,但現在我需要修剪並將后綴移到姓氏之后的右側。

Range("A1") = Trim(StrReverse(Split(StrReverse(Range("A1")), ",")(0)) & " " _
                    & StrReverse(Split(StrReverse(Range("A1")), ",")(1)))
Result:   Joseph Allen Jr    Johnson
Result Required:  Joseph Allen Johnson Jr

謝謝你的幫助!

因此,如果您的輸入類似於 Johnson、Joseph Allen Jr,那么您可以使用要檢查的后綴設置一個數組/集合。 然后在您移動姓氏之前使用

Dim i as Variant
Dim suffixArray as String()
Dim nameString as String
Dim suffixString as String
Dim arrayEntryLength as Long

suffixArray(0) = "Jr"
suffixArray(1) = "Sr"
suffixArray(2) = "I"
suffixArray(3) = "II"
...

for each i in suffixArray
    nameString = "Johnson, Joseph Allen Jr"    'or use Cells(1,"a").value
    arrayEntryLength = len(suffixArray(i))
    if Right(nameString, arrayEntryLength) = suffixArray(i) then
        suffixString = suffixArray(i)
        nameString = left(nameString, len(nameString)-arrayEntryLength)
    end if
next i

'move the last name of nameString

nameString = nameString & " " & suffixString

'rest of code

全名是一個未解析的字符串,像上面提到的 Chris H 操作“后綴”可能是一種合適的方式。 這是 Outlook 中的全名內容 model 聯系人項目: https://docs.microsoft.com/en-us/office/vba.api/outlook 構建一組已知后綴通常可以解決這個問題。 注意:后綴可能如國王路易十七等是一些歷史背景。

暫無
暫無

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

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