我正在使用记录处理工具,遇到了问题。
我们的一位客户为我们提供了包含换行符的原始数据-使其在格式化之前无法使用。不幸的是,无法使用运行清除功能的简单解决方案,因为它会删除过程中16位帐号的最后一位。希望每个最终用户在移植数据以将其格式化为文本字符串时都记得保留目标格式,这也不是真正的选择。
因此,这是我寻求帮助的请求: 通过使用此公式,我可以得到一个干净的值
=IF(RIGHT(A2,1)=" ",LEFT(A2,LEN(A2)-1),A2)
我现在需要将其转换为一个宏,该宏会将所选单元格的cell.value更改为公式的结果。但是在将我的头撞到墙上8个小时之后,我只是不知道该怎么做。任何帮助深表感谢!
答案 0 :(得分:0)
您在VBA中的公式:
Sub Klean()
Dim Cell As Range
For Each Cell In Selection
v = Cell.Value
If Right(v, 1) = " " Then
v = Left(v, Len(v) - 1)
Cell.Value = v
End If
Next Cell
End Sub
答案 1 :(得分:0)
您需要一个对给定单元格进行迭代的函数。您可以使用当前选中的任何单元格来调用该函数。
Option Explicit
Sub DoSomethingCool()
CleanCellText Selection
'--- or ---
CleanCellText ActiveSheet.Range("A1:Z20")
End Sub
Public Sub CleanCellText(ByRef thisRange As Range)
Dim cell As Range
For Each cell In thisRange
If Right$(cell.Value, 1) = " " Then
cell.Value = Left$(cell.Value, Len(cell.Value) - 1)
End If
Next cell
End Sub
答案 2 :(得分:0)
非常感谢大家如此迅速和翔实的回应!
我设法确定了问题-事实证明,除了回车符外,原始数据还在数据前面包含一个制表符空间,这引起了所有问题,并且拒绝通过修整或手动编辑进行编辑!这是我嵌入的宏按钮解决问题的最终代码:
Private Sub CommandButton6_Click()
Dim Rng As Range
Set Rng = Selection
For Each cell In Rng
If IsEmpty(cell.Value) = False Then
cell.Value = Replace(cell.Value, Chr(9), "'")
End If
Next cell
End Sub
我已将制表符空间设置为用撇号代替,以使最终值不会像在我使用clean函数时发生的那样被截断。
再次感谢大家!