BIM百宝箱中其他工程费用计算默认以万元为单位进行计算,但从有些软件导出的表格均是以元为单位。需要在Excel中进行一个转换,只要使用下面的VBA插件很容易解决:
下面提供一个 VBA 代码,可以将用户选中的区域中的数字乘以指定倍数。这个倍数可选范围在 1/10000 到 10000 之间,且只允许 10 的倍数或分数(例如:1/10000、1/1000、1/100、1/10、1、10、100、1000、10000)。
你可以将下面的代码复制到 Excel 的 VBA 编辑器中(按 Alt+F11 打开),然后插入一个模块,将代码粘贴进去。之后你可以在 Excel 中运行该宏,也可以将其制作成插件,并添加按钮或菜单调用。
使用方法:先选中Excel中需要转换的部分,可以包含文字及公式单元格,再运行VBA程序即可。注意此操作不可使用返回按键,操作前请先备份原表格。
Sub MultiplySelectedCellsWithoutFormulas()
Dim validMultipliers As Variant
Dim inputValue As String
Dim multiplier As Double
Dim cell As Range
Dim isValid As Boolean
Dim i As Integer
' 允许的倍数(以数值形式):1/10000, 1/1000, 1/100, 1/10, 1, 10, 100, 1000, 10000
validMultipliers = Array(0.0001, 0.001, 0.01, 0.1, 1, 10, 100, 1000, 10000)
' 提示用户输入倍数
inputValue = Application.InputBox( _
Prompt:="请输入倍数(仅允许1/10000,1/1000,1/100,1/10,1,10,100,1000,10000):", _
Title:="选择倍数", Type:=2)
' 如果用户取消则退出
If inputValue = "False" Then Exit Sub
' 尝试将输入转换为数值
On Error GoTo InvalidInput
multiplier = Evaluate(inputValue)
On Error GoTo 0
' 检查输入值是否在允许范围内
isValid = False
For i = LBound(validMultipliers) To UBound(validMultipliers)
If Abs(multiplier - validMultipliers(i)) < 0.0000001 Then
isValid = True
Exit For
End If
Next i
If Not isValid Then
MsgBox "输入的倍数不在允许范围内。请仅输入1/10000,1/1000,1/100,1/10,1,10,100,1000,10000中的一个。", vbExclamation
Exit Sub
End If
' 检查用户是否选择了单元格区域
If TypeName(Selection) <> "Range" Then
MsgBox "请先选择一个单元格区域。", vbExclamation
Exit Sub
End If
Application.ScreenUpdating = False
For Each cell In Selection
' 如果单元格中是数字且不包含公式,则进行乘法操作
If Not cell.HasFormula Then
If IsNumeric(cell.Value) Then
cell.Value = cell.Value * multiplier
End If
End If
Next cell
Application.ScreenUpdating = True
MsgBox "操作完成!", vbInformation
Exit Sub
InvalidInput:
MsgBox "无效的输入,请输入合法的倍数。", vbExclamation
End Sub
【说明】
- 代码中使用了
Application.InputBox
显示输入框,用户可以输入形如 “1/10” 或 “10” 的表达式。使用Evaluate
将字符串转换为数值。 - 程序验证输入值是否与预设数组中的允许值之一相等,如果不匹配则弹出提示。
- 对于选中的每个单元格,如果单元格中内容为数字,则将其乘以指定倍数。
- 为了防止屏幕闪烁,在修改过程中关闭屏幕更新,操作完成后再打开。
将此代码作为 Excel 插件的一部分发布时,可将其保存为 .xlam 文件,或将代码嵌入到自定义功能区中以便用户使用。
评论0