2017-09-25 185 views
3

在Excel之前的所有字符,这是细胞值的一个例子。 “▲99315”, “▲65”。我正在尝试使用VBA删除总是向上或向下的箭头,以获得或损失。Excel的VBA查找和替换数字

我似乎无法使用VBA来完成这项工作。当我打开这个工作簿时,它会自动更新。我想运行一个VBA来查找和替换箭头。当我尝试在“查找”中粘贴箭头字符时,它显示为“?”。

+2

,如果他们在每一个细胞,使用文本到列列分成两个,然后删除第一列 – jsotola

+1

您也可以包括截图,让我们知道正在使用什么箭?您可能需要使用Unicode字符删除它们(一【示例是在这里(https://stackoverflow.com/q/37024107/4650297)) – BruceWayne

+2

你也可以使用一个公式,说值是A1:= MID(A1,2,LEN(A1))假定箭头总是第一个字符。 – Sorceri

回答

2

如果所有这些数字的强制包含的第一个字符为向上和向下箭头之一,你可以试试这个....

下面的代码假定您的号码在A列,并从开始行2。如果不是,请根据您的要求进行更改。

Sub ReplaceArrows() 
    Dim lr As Long 
    lr = Cells(Rows.Count, "A").End(xlUp).Row 
    Range("A2:A" & lr).Value = Evaluate("=IF(A2:A" & lr & "="""","""",RIGHT(A2:A" & lr & ",LEN(A2:A" & lr & ")-1)+0)") 
End Sub 
+0

这为我工作。感谢您的快速帮助。第一次在这里,并有很多快速的答案。惊人。 – sms

+1

@sms不客气!很高兴它的工作。请花一点时间接受答案,将您的问题标记为已解决。 :) – sktneer

0

如果这些条件格式的图标,你需要使用rng.FormatConditions.Delete方法。

1

要使用VBA查找,你需要确定你要替换的字符的代码。假设你使用的是一样的,你粘贴到你的问题的箭头,下面的代码将工作:

with myRange 
    .Replace what:=ChrW(&H25B2), replacement:="" 'Up Arrow 
    .Replace what:=ChrW(&H25BC), replacement:="" 'Down Arrow 
end with 

注为双字节字符使用ChrW,和十六进制代码代表的向上和向下箭头。