2012-03-30 105 views
1

我有這樣的數據單元:細胞改變串

 
ABCD123XYZ 
MPOP345MLU 
. 
. 
. 
. 

我想要做的是,從這些細胞中取出第三和第四個字符,因此給

 
AB123XYZ 
MP345MLU 

我如何在VBA中做到這一點?

我不知道這種語言的想法,如果有人能指導我在正確的方向,這將會是巨大的:)

我明白,我必須:

  1. 申報2字符串變量從單元格A1 ST1和ST2
  2. 存儲數據到可變ST1
  3. 複製所有,但第二和第三焦炭引入STR2
  4. 輸出STR2成B1
  5. 移動到A2

回答

1

你不需要VBA這一點。只需使用一個公式:

=LEFT(A1,2) & MID(A1,5,9999) 
1

使用 「中」 功能

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 
+1

這是非常低質量的答案。請添加更多細節和解釋。請記住,您不是回答這個具體問題,而是回答後代,以便其他人可以使用這個問題/答案作爲參考。謝謝。 – Gray 2012-03-30 18:22:49

+0

我更新了我的回答 – jdl 2012-03-30 22:46:30

+1

謝謝jdl。好多了。 – Gray 2012-03-30 23:05:34

1

@ 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

+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

+0

@SiddharthRout:是!你絕對正確。感謝您的評論。我通過編輯答案來結合您的建議。 – bernie 2012-03-30 19:24:06

3

使用其中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 
+0

+1在這個答案中分享珍貴的VBA相關知識,並作爲其他答案的評論。乾杯。 – bernie 2012-03-30 19:25:15

+1

+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

+0

+1是的,你是正常的:) – 2012-03-31 23:42:19