更改单元格中的字符串

时间:2012-03-30 17:12:03

标签: vba excel-vba excel

我的单元格包含以下数据:

ABCD123XYZ  
MPOP345MLU
.  
.  
.  
.  

我想要做的是,删除所有这些单元格中的第3个和第4个字符,从而给出

AB123XYZ  
MP345MLU

如何在VBA中执行此操作?

我不知道这种语言,如果有人可以指导我朝着正确的方向前进,那就太棒了:)。

我明白我必须:

  1. 声明2个字符串变量st1和st2
  2. 将数据A1中的数据存储到变量st1
  3. 将除第2和第3个字符之外的所有字符复制到str2
  4. 将Str2输出到B1
  5. 转到A2

4 个答案:

答案 0 :(得分:3)

使用Replace()公式的另一种方法,其中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 :(得分:1)

使用“mid”功能

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

答案 2 :(得分:1)

您不需要VBA。只需使用公式:

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

答案 3 :(得分: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