我有列A中包含一年的工單的列表。下面是一些在列表中工單的圖片:如何從文本字符串中提取一年並在另一列中返回年份?
目標:我想知道如何創建VBA函數,從A列中的工作單中提取年,和返回相應年度B列中,像顯示在下面的圖片:
我可以通過看A列中手動輸入的一年,但我在想,如果有一個可以做這個任務的函數自動。
我有列A中包含一年的工單的列表。下面是一些在列表中工單的圖片:如何從文本字符串中提取一年並在另一列中返回年份?
目標:我想知道如何創建VBA函數,從A列中的工作單中提取年,和返回相應年度B列中,像顯示在下面的圖片:
我可以通過看A列中手動輸入的一年,但我在想,如果有一個可以做這個任務的函數自動。
使用波紋管比VBA宏最簡單。
在下面的單元格A1
中寫下並延伸至A1
地址自動處理。
=MID(A1,FIND("_",A1,3)+1 ,4)
請注意,3
以上,是後_
字符的第一個位置,所以你可以改變它到你需要的情況或使用FIND("_",A1)+1
代替上述3
,波紋管:
=MID(A1,FIND("_",A1,FIND("_",A1)+1)+1 ,4)
或波紋管作爲宏:
Sub ExtYear()
Dim i, sh As Long
sh = Cells(Rows.Count, "A").End(xlUp).Row
For i = 1 To sh
Cells(i, "B").Value = Split(Cells(i, "A").Value, "_")(UBound(Split(Cells(i, "A").Value, "_")))
Next i
End Sub
爲什麼你會在這個例子中使用mid?很明顯,會導致錯誤,特別是當您查看其中一個字符串比其餘字符少1個字符時提供的圖像。 '= RIGHT(A1,4)'應該是更合適的答案。 –
這兩種方法的功能(使用MID或RIGHT)是相關的。我指導這兩個,因爲各種答案。 – mgae2m
我同意。比原來的答案更好地使用'Mid'。感謝修訂 –
您可以使用'Right'公式,例如'= VALUE(RIGHT(A1,4))''。價值將把它變成一個數字(這是一個日期是),但你可以不做。 – SJR
謝謝! @SJR這正是我所需要的。 – Nick
記錄一個'text-to-columns'宏 – jsotola