我有這樣的數據單元:細胞改變串
ABCD123XYZ MPOP345MLU . . . .
我想要做的是,從這些細胞中取出第三和第四個字符,因此給
AB123XYZ MP345MLU
我如何在VBA中做到這一點?
我不知道這種語言的想法,如果有人能指導我在正確的方向,這將會是巨大的:)
我明白,我必須:
- 申報2字符串變量從單元格A1 ST1和ST2
- 存儲數據到可變ST1
- 複製所有,但第二和第三焦炭引入STR2
- 輸出STR2成B1
- 移動到A2
我有這樣的數據單元:細胞改變串
ABCD123XYZ MPOP345MLU . . . .
我想要做的是,從這些細胞中取出第三和第四個字符,因此給
AB123XYZ MP345MLU
我如何在VBA中做到這一點?
我不知道這種語言的想法,如果有人能指導我在正確的方向,這將會是巨大的:)
我明白,我必須:
你不需要VBA這一點。只需使用一個公式:
=LEFT(A1,2) & MID(A1,5,9999)
使用 「中」 功能
Dim str1 As String
Dim str2 As String
str1 = Cells(1, 1) '"ABCD123XYZ"
str2 = Cells(2, 1) '"MPOP345MLU"
Cells(1, 2) = Mid(str1, 1, 2) & Mid(str1, 5) 'yield AB123XYZ
Cells(2, 2) = Mid(str2, 1, 2) & Mid(str2, 5) 'yield MP345MLU
@ DougGlancy的得到你的答案已經,
但如果你真的想用VBA:
Sub substr_example()
ThisWorkbook.Sheets(1).Range("B1:B100").FormulaR1C1 = _
"=LEFT(RC[-1],2)&MID(RC[-1],5,LEN(RC[-1])-4)"
End Sub
+1提供替代品。 bernie,因爲您已經指定'.FormulaR1C1',所以不需要檢查R1C1 ref樣式。也會建議這個公式,而不是硬編碼100或MID()中的任何其他數字。 '= IF(LEN(A1)> 3,LEFT(A1,2)&MID(A1,5,LEN(A1)-4),「」)' – 2012-03-30 18:06:50
@SiddharthRout:是!你絕對正確。感謝您的評論。我通過編輯答案來結合您的建議。 – bernie 2012-03-30 19:24:06
使用其中A1是電池更換()公式的另一種方式,其有文字。您可以簡單地複製公式。
=REPLACE(REPLACE(A1,3,1,""),3,1,"")
VBA代碼
Sub Sample()
Dim LastRow As Long
With Sheets("Sheet1")
LastRow = .Range("A" & Rows.Count).End(xlUp).Row
.Range("B1").FormulaR1C1 = "=REPLACE(REPLACE(RC[-1],3,1,""""),3,1,"""")"
.Range("B1").AutoFill Destination:=Range("B1:B" & LastRow), Type:=xlFillDefault
End With
End Sub
+1在這個答案中分享珍貴的VBA相關知識,並作爲其他答案的評論。乾杯。 – bernie 2012-03-30 19:25:15
+1 Sid - 不錯的工作,我不相信沒有人發佈一個骯髒的舊循環解決方案!如果您喜歡,可以使用自動填充:'With Sheet1.Range(「A1」,Sheet1.Cells(Rows.Count,1).End(xlUp))。Offset(,1) .Formula =「= REPLACE (REPLACE(A1,3,1,「」「」),3,1,「」「」)「 .Value =。值 End With' – Reafidy 2012-03-31 23:13:53
+1是的,你是正常的:) – 2012-03-31 23:42:19
這是非常低質量的答案。請添加更多細節和解釋。請記住,您不是回答這個具體問題,而是回答後代,以便其他人可以使用這個問題/答案作爲參考。謝謝。 – Gray 2012-03-30 18:22:49
我更新了我的回答 – jdl 2012-03-30 22:46:30
謝謝jdl。好多了。 – Gray 2012-03-30 23:05:34