怎样用VBA在excel表格中取其中一列内容的最后两位

2024-11-19 07:46:09
推荐回答(4个)
回答1:

新建一个宏,将以下代码复制进去,执行此宏即可完成任务。
您可以指定需要提取第几列,需要提取最右侧的字符个数。
代码中提取Sheet1表的字符保存到Sheet2表中,如果您需要操作的表名不同,请自行修改。

'以下为需要复制的代码:

'本示例将提取sheet1表中用户指定列的后N个字符到Sheet2表中
'sheet2的第一列保留对应一表行号的结果,第二列保存连续的提取结果
On Error GoTo handerr

Dim i As Long
Dim n As Long
Dim s As Long
Dim c As Integer
Dim r As Integer
Dim Str1 As String

Str1 = InputBox("请输入需要提取的列序号:" & vbCrLf & "A=1,B=2,C=3……依此类推。", "列序号")
If IsNumeric(Str1) = False Or Val(Str1) < 1 Then
MsgBox "输入的序号不是一个有效的数字,操作被取消!", vbInformation, "提示"
Exit Sub
End If
c = Int(Val(Str1))

Str1 = InputBox("请输入需要提取最右侧的字符个数:" & vbCrLf & "单元格字数不足将忽略", "提取个数")
If IsNumeric(Str1) = False Or Val(Str1) < 1 Then
MsgBox "输入的序号不是一个有效的数字,操作被取消!", vbInformation, "提示"
Exit Sub
End If
r = Int(Val(Str1))

n = Sheet1.UsedRange.Rows.Count
n = ActiveSheet.UsedRange.Rows(n).Row
s = 1

With Sheet2
.Cells(1, 1) = "对应行的提取结果"
.Cells(1, 2) = "连续的提取结果"
.Columns("A:A").ColumnWidth = 20
.Columns("B:B").ColumnWidth = 20
End With

With Sheet1
For i = 2 To n
Str1 = CStr(.Cells(i, c).Value)
Sheet2.Cells(i, 1) = ""
Sheet2.Cells(i, 2) = ""
If Len(Str1) >= r Then
s = s + 1
Str1 = Right(Str1, r)
Sheet2.Cells(i, 1) = Str1
Sheet2.Cells(s, 2) = Str1
End If
Next
End With

Sheet2.Activate

MsgBox "提取完毕,结果保存在Sheet2中。" & vbCrLf & "共提取有效单元格" & s & "个。", vbInformation, "提示"

Exit Sub
handerr:
MsgBox Err.Description, vbInformation, "错误提示"

回答2:

假设是A列

i=range("a65536").end(xlup).row()
msgbox range("A" & i).value
msgbox range("A" & i-1).value

回答3:

请补充问题
是不是取其中一列最后不为空的两个单元格的内容?
这一列单元格里中间有没有空格?

回答4:

请详细点,比如说……