excel vba将公式转为数值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了excel vba将公式转为数值相关的知识,希望对你有一定的参考价值。

1。G/K/O/S/W/AA列
2。每一列从第13单元开始到最后一非空单元结束
3。将公式转为数值后,给数值前面加入“A”

sub 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)
所以这个运行起来就有点不行

追答Sub 将公式转为数值()
    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 Integer
Range("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列设成了文本格式,还要一个单元格一个单元格地双击才能转换成正常显示……
期待其他专家有更好的办法。

参考技术A &一个空字符,或者是&撇号,就行 参考技术B 以A1为例子:
[a1] = "'" & [a1]

以上是关于excel vba将公式转为数值的主要内容,如果未能解决你的问题,请参考以下文章

excel vba中将公式转为文本或数值公式

excel或者vba,怎样将工作簿内所有橙色单元格公式转换为数值?

excel VBA 当有公式的单元格录入内容后,自动将内容粘贴为数值

利用VBA实现多个工作表指定单元格公式变为数值?

ASP中有啥函数把文本型值转换为数值型值?

Excel:公式转数值