2017-09-25 27 views
-2

我有列A中包含一年的工單的列表。下面是一些在列表中工單的圖片:如何從文本字符串中提取一年並在另一列中返回年份?

enter image description here

目標:我想知道如何創建VBA函數,從A列中的工作單中提取年,和返回相應年度B列中,像顯示在下面的圖片:

enter image description here

我可以通過看A列中手動輸入的一年,但我在想,如果有一個可以做這個任務的函數自動。

+3

您可以使用'Right'公式,例如'= VALUE(RIGHT(A1,4))''。價值將把它變成一個數字(這是一個日期是),但你可以不做。 – SJR

+0

謝謝! @SJR這正是我所需要的。 – Nick

+0

記錄一個'text-to-columns'宏 – jsotola

回答

2

使用波紋管比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 
+0

爲什麼你會在這個例子中使用mid?很明顯,會導致錯誤,特別是當您查看其中一個字符串比其餘字符少1個字符時提供的圖像。 '= RIGHT(A1,4)'應該是更合適的答案。 –

+0

這兩種方法的功能(使用MID或RIGHT)是相關的。我指導這兩個,因爲各種答案。 – mgae2m

+0

我同意。比原來的答案更好地使用'Mid'。感謝修訂 –

相關問題