怎样用VBA在excel表格中取其中一列内容的最后两位 5
4个回答
展开全部
新建一个宏,将以下代码复制进去,执行此宏即可完成任务。
您可以指定需要提取第几列,需要提取最右侧的字符个数。
代码中提取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, "错误提示"
您可以指定需要提取第几列,需要提取最右侧的字符个数。
代码中提取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, "错误提示"
展开全部
假设是A列
i=range("a65536").end(xlup).row()
msgbox range("A" & i).value
msgbox range("A" & i-1).value
i=range("a65536").end(xlup).row()
msgbox range("A" & i).value
msgbox range("A" & i-1).value
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
请补充问题
是不是取其中一列最后不为空的两个单元格的内容?
这一列单元格里中间有没有空格?
是不是取其中一列最后不为空的两个单元格的内容?
这一列单元格里中间有没有空格?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
请详细点,比如说……
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |