是这样的,有类似以下的数据五万行左右,要求把名称最后的英文字母去掉,表如下。 中国邮政D
中国政法大厦H
中国工行
中国财税大楼A
... ... 我编写了以下程序是去掉一行的最后一个英文字母的,但是下面就不大会了,想请教下各位高手,如何把程序补充修改完整,可以实现列的操作,感激不尽。
Sub bb()
Dim ss(1 To 50) As String
Dim i As Integer
Dim msum As String
For i = 1 To Len(Cells(1, 1)) '获取文本长度
ss(i) = Mid(Cells(1, 1), i, 1) '把文本内容存到数组中
If Not (Asc(ss(i)) >= 0 And Asc(ss(i)) <= 255) Then '判断!如果ascii码不在0-255中就是汉字
msum = msum + ss(i) '把数组不是英文的存入变量
Cells(1, 2) = msum '输出汉字
End If Next
End Sub
下面怎样实现 列 的操作?不大会,我的数据处理列是在cells(i,2) i=1 to 50000;
中国政法大厦H
中国工行
中国财税大楼A
... ... 我编写了以下程序是去掉一行的最后一个英文字母的,但是下面就不大会了,想请教下各位高手,如何把程序补充修改完整,可以实现列的操作,感激不尽。
Sub bb()
Dim ss(1 To 50) As String
Dim i As Integer
Dim msum As String
For i = 1 To Len(Cells(1, 1)) '获取文本长度
ss(i) = Mid(Cells(1, 1), i, 1) '把文本内容存到数组中
If Not (Asc(ss(i)) >= 0 And Asc(ss(i)) <= 255) Then '判断!如果ascii码不在0-255中就是汉字
msum = msum + ss(i) '把数组不是英文的存入变量
Cells(1, 2) = msum '输出汉字
End If Next
End Sub
下面怎样实现 列 的操作?不大会,我的数据处理列是在cells(i,2) i=1 to 50000;
Dim ss(1 To 50) As String
Dim i As Integer
Dim j As Integer
Dim msum As String
For j = 1 To [L65536].End(xlUp).Row
For i = 1 To Len(Cells(j, 1)) '获取文本长度
ss(i) = Mid(Cells(j, 1), i, 1) '把文本内容存到数组中
If Not (Asc(ss(i)) >= 0 And Asc(ss(i)) <= 255) Then '判断!如果ascii码不在0-255中就是汉字
msum = msum + ss(i) '把数组不是英文的存入变量
Cells(j, 2) = msum '输出汉字
End If
Next i
Next j
End Sub
仅仅最后一位可能是字母?同时满足的话觉得选择right来处理不错select case asc(right(str,1))
case >0 <255
end select
Dim tt As String
Do While Not EOF(1)
Line Input #1, tt
tt = Trim(tt)
If Asc(Right(tt, 1)) > 0 And Asc(Right(tt, 1)) < 255 Then
Text2.Text = Text2.Text & Left(tt, Len(tt) - 1) & vbCrLf
Else
Text2.Text = Text2.Text & tt & vbCrLf
End If
Loop
Close #1
只能说再加一个循环就行了
因为不知道你的行列是啥意思
你是从EXCEL里读出来???
还是msFlexGrid?
Sub bb()
Dim ss(1 To 50) As String
Dim i As Integer
Dim j As Integer
Dim msum As String
Dim intRows As Integer
With NewSheet 'Newsheet 是你打开excel的那个变量
intRows=.UsedRange.Rows.Count
For j = 1 To intRows
For i = 1 To Len(.Cells(j, 1)) '获取文本长度
ss(i) = Mid(.Cells(j, 1), i, 1) '把文本内容存到数组中
If Not (Asc(ss(i)) >= 0 And Asc(ss(i)) <= 255) Then '判断!如果ascii码不在0-255中就是汉字
msum = msum + ss(i) '把数组不是英文的存入变量
.Cells(j, 2) = msum '输出汉字
End If
Next i
Next j
End With
End Sub
Dim s As String
Dim ch As Integer
Dim i As Long
Dim j As Long
For i = UsedRange.Row To UsedRange.Row + UsedRange.Rows.Count - 1
s = Cells(i, 1)
For j = 1 To Len(s)
ch = Asc(Mid$(s, j, 1))
If (0 <= ch) And (ch <= 255) Then
Mid$(s, j, 1) = " " '非汉字转为空格
End If
Next
Cells(i, 1) = Replace(s, " ", "") '一次性删除空格
Next
End Sub