excel vba将公式转为数值
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了excel vba将公式转为数值相关的知识,希望对你有一定的参考价值。
1。G/K/O/S/W/AA列
2。每一列从第13单元开始到最后一非空单元结束
3。将公式转为数值后,给数值前面加入“A”
dim str as string
dim rng as range
str="G/K/O/S/W/AA"
arr=split(str,"/")
for i=0 to ubound(arr)
set rng=range(cells(13,arr(i)),cells(65536,arr(i)).end(xlup))
brr=rng
for each cl in brr
cl="A" & cl
next
rng=brr
next
end sub 参考技术A 昨天不是传给你啦追问
是的,代码在模块2里面,名字叫(将公式转为数值)
我把G/K/O/S/W/AA修改为前面没有0。(也就是全是整数或一个0)
所以这个运行起来就有点不行
For i = 5 To 27 Step 2
n = Cells(4 ^ 8, i).End(3).Row
For j = 13 To n
If Cells(j, i) <> "" Then
t = Cells(j, i).Text
If InStr(t, ".") = 0 Then
Cells(j, i) = "A" & t
ElseIf Cells(j, i) = 0 Then
Cells(j, i) = "A0"
Else
t = Replace(t, "0.", "")
f = 1
For k = 1 To Len(t)
If Mid(t, k, 1) = "0" Then
f = f + 1
Else
Exit For
End If
Next
l = Len(t) - f + 1
For k = Len(t) To 1 Step -1
If Mid(t, k, 1) = "0" Or Mid(t, k, 1) = " " Then
l = l - 1
Else
Exit For
End If
Next
Cells(j, i) = "A" & Mid(t, f, l)
End If
End If
Next
Next
End Sub追问
If Cells(j, i) "" Then这句提示
AA列没有执行,其它列都有了(好像速度比之前哪个有点慢)
提示什么?
把原来两头的四行代码加回去,因为字数超了,我删掉了,那是加速用的
If Cells(j, i) <> "" Then这句提示
Cells(j, i)改为 Cells(j, i).text
本回答被提问者采纳excel vba 数字转文本
用excel vba 怎么按第一列的数据,是11位数字,把它显示把第二列的那种方式(文本),我用Selection.NumberFormat = "@",都不成功的,不知哪一步错了,它只会变成第三列的那种方式,但不是我想要的效果。
亲,对B列设置完文本“@”,要对B列重新赋予文本状态的A列值,才能正常显示成文本。假设A列数据有100行:
Dim i As IntegerRange("B:B").NumberFormat = "@"
For i = 1 To 100
Range("B" & i) = Format(Range("A" & i), "0")
Next追问
我成功了。用以下的代码,用了循环,可以有不用循环的方法吗?如果我一次换一列2000+的数据,用循环可能久一点。
Sub 数字转文本()
Dim rn As Range
For Each rn In Selection
rn.Offset(0, 1).NumberFormat = "@"
rn.Offset(0, 1) = Format(rn, "0")
Next
我还真没办法,Excel这方面比较搞人。假如你是手工操作,把B列设成了文本格式,还要一个单元格一个单元格地双击才能转换成正常显示……
期待其他专家有更好的办法。
[a1] = "'" & [a1]
以上是关于excel vba将公式转为数值的主要内容,如果未能解决你的问题,请参考以下文章
excel或者vba,怎样将工作簿内所有橙色单元格公式转换为数值?