gpt4 book ai didi

excel - VBA不断将句点更改为逗号

转载 作者:行者123 更新时间:2023-12-04 22:13:35 25 4
gpt4 key购买 nike

我制作了一个 vba 脚本,应该将特定区域的值从逗号分隔更改为点分隔。
这是代码:

Sub commas_to_periods()
'
' commas_to_periods Macro
' Convert all commas to Periods in a specified area that contains values before converting the file to csv
'

'
Range("U3:AJ139").Select
' Selection.Replace What:=",", Replacement:=".", SearchOrder:=xlByColumns, MatchCase:=True
' Selection.Replace What:=",", Replacement:=".", LookAt:=xlPart, _
' SearchOrder:=xlByColumns, MatchCase:=True, SearchFormat:=False, _
' ReplaceFormat:=False, FormulaVersion:=xlReplaceFormula2

Dim V As Variant, i As Long, j As Long, T
V = Range("U3:AJ139").Value
howMany = 0
Application.ScreenUpdating = False
T = Timer
For i = LBound(V, 1) To UBound(V, 1)
For j = LBound(V, 2) To UBound(V, 2)
If InStr(V(i, j), ",") > 0 Then
V(i, j) = Replace(V(i, j), ",", ".")
howMany = howMany + 1
End If
Next j
Next i
Range("U3:AJ139").Value = V
msgForBox = "That took " & Timer - T & " Seconds and found: " & howMany & " commas"
MsgBox (msgForBox)
Application.ScreenUpdating = True

End Sub
如您所见,我尝试了几种方法,但我还使用了该自定义循环来计算替换次数。我就是无法让它工作!消息框显示它找到了 100 多个逗号,但是当宏完成时没有进行任何更改。下次我运行它时,我会在框中收到完全相同的消息。找到相同数量的逗号 - 没有变化!
如果我尝试替换其他任何东西,它就可以正常工作。进行更换。当我用逗号尝试它时,它顽固地不起作用。现在我想这与我的区域设置有关,但我无法找到解决方法。当我进行手动搜索并替换逗号时,逗号会发生变化。我什至记录了我进行手动搜索和替换的宏,我得到了相同的结果。 VBA 似乎恢复了我的更改以符合我的区域设置。有没有办法解决这个问题?

最佳答案

请注意,如果您的区域设置设置为 ,作为小数点表示任何包含 . 的数字将被视为文本。
因此,如果您希望 Excel 不将它们转换为数字,则需要确保单元格的数字格式设置为文本:.NumberFormat = "@"在写入包含 . 的数字之前点。
例如

Sub a()

Selection.NumberFormat = "@"
Selection = Replace(Selection, ",", ".")

End Sub
对于多个单元格,您需要循环:
Sub b()   
Dim Rng As Range
Set Rng = Selection

Rng.NumberFormat = "@"

Dim Cell As Variant
For Each Cell In Rng.Cells
Cell.Value2 = Replace$(Cell.Value2, ",", ".")
Next Cell
End Sub
因为任何其他解决方案都不起作用,因为 Excel 认为它很聪明并将任何文本转换回数字。
enter image description here

关于excel - VBA不断将句点更改为逗号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71435779/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com