如何在Excel中删除单元格(或范围)的前撇号?
即:
尝试了以下值,但所有这些值都不包含前导撇号:
xlRange.Value
xlRange.Value2
xlRange.get_Value(Type.Missing)
也尝试使用下面的替换代码,但不起作用:
xlRange.Replace("'", "", Excel.XlLookAt.xlWhole, Excel.XlSearchOrder.xlByRows, true, Type.Missing, Type.Missing, Type.Missing);
xlRange.NumberFormat返回“常规”
答案 0 :(得分:1)
在Excel中使用数字前导撇号的目的是将内容标记为“文本”,其结果也将其向左对齐。通过在VBA编辑器的“立即窗口”(Ctrl + G)中查询单元格内容可以看到这一点:
<View>
<pinPage/> set a flex:1 to get full screen when ever pin page is active
<otherPage/>//navigation works here.
</View>
如果对文本(带有撇号)执行此操作,则结果将在窗口左侧刷新。当对数字执行时,结果前会加一个空格。
将单元格内容转换为数字可删除撇号。尝试对非数字内容执行此操作将导致错误。下面的代码演示了如何使用VB语言完成此操作:
?ActiveCell.Value
在C#中,使用Sub ConvertLeftAlignedNumber()
Dim rng As Excel.Range
Dim rngVal As Variant
Set rng = xlApp.ActiveCell
rngVal = rng.Value
If IsNumeric(rngVal) Then
rng.Value = Val(rngVal)
End If
End Sub
代替Double.TryParse()
如果问题还在于从文本和数字中删除前导撇号,则可以通过将文本内容辅助为变量,清除单元格,然后再写回值来完成文本值。
IsNumeric
在VB(A)中,可以使用 //test data
Excel.Range rngString = ws.get_Range("B12", missing);
Excel.Range rngLeftValue = ws.get_Range("D14", missing);
Excel.Range rngValue = ws.get_Range("A15", missing);
rngString.Value2 = "'test";
rngLeftValue.Value2 = "'10";
rngValue.Value2 = 10;
//Is numeric?
Double val;
if (Double.TryParse(rngString.Value2.ToString(), out val))
{
System.Diagnostics.Debug.Print(val.ToString());
}
else //it's a string
{
string sString = rngString.Text.ToString();
rngString.Clear();
string sStringx = sString.Substring(0);
rngString.Value2 = sStringx;
System.Diagnostics.Debug.Print(rngString.Value2.ToString());
}
if (Double.TryParse(rngLeftValue.Value2.ToString(), out val))
{
System.Diagnostics.Debug.Print(val.ToString());
}
if (Double.TryParse(rngValue.Value2.ToString(), out val))
{
System.Diagnostics.Debug.Print(val.ToString());
}
函数:
Right