vba - 根据货币乘以每个单元格
问题描述
大家好,感谢您的时间,我知道我应该自己做一些工作,但我真的不知道从哪里开始。
我有一张 4000 到 5000 行(每周更改)的表格,如下所示:
我需要一个代码来遍历 D 列并将外部值更改为 KD,稍后我将删除 C 列(或者让代码将所有符号更改为 KD,但并不重要),类似于以下代码:
Sub test()
Dim cell As Range
For Each cell In ActiveSheet.UsedRange
Select Case
Case "$"
Range("UsedRange").Value = ActiveSheet.Evaluate("INDEX(UsedRange *0.3,)")
Case "€"
Range("UsedRange").Value = ActiveSheet.Evaluate("INDEX(UsedRange *0.34,)")
Case "GBP"
Range("UsedRange").Value = ActiveSheet.Evaluate("INDEX(UsedRange *0.4,)")
Case "AED"
Range("UsedRange").Value = ActiveSheet.Evaluate("INDEX(UsedRange *0.08,)")
Case "KD"
Do.Nothing
End Select
Next cell
End Sub
以下代码似乎有效,需要专业人士的验证:
Sub subMultiply()
For Each cel In Range("C2:C" & Range("C2").End(xlDown).Row)
If cel.Value = "$" Then
cel.Offset(0, 1).Value = Val(cel.Offset(0, 1)) * 0.3
ElseIf cel.Value = "AED" Then
cel.Offset(0, 1).Value = Val(cel.Offset(0, 1)) * 0.083
ElseIf cel.Value = "€" Then
cel.Offset(0, 1).Value = Val(cel.Offset(0, 1)) * 0.34
ElseIf cel.Value = "GBP" Then
cel.Offset(0, 1).Value = Val(cel.Offset(0, 1)) * 0.42
End If
Next
ActiveSheet.Range("C:C").Replace "AED", "KD"
ActiveSheet.Range("C:C").Replace "GBP", "KD"
ActiveSheet.Range("C:C").Replace "$", "KD"
ActiveSheet.Range("C:C").Replace "€", "KD"
结束子
解决方案
这是编写代码进行检查的一种方法,如果货币不是 KD,则乘以汇率,并将 C 列单元格更改为 KD。
- 将 KD 的比率存储在变量中,
- 使用循环一起遍历每一行的 C 和 D 列,
- 我将有一个
if
语句来检查 C 列中的每个单元格,例如 C2,然后如果它不是 KD,则使用具有 KD 率的变量并将其与 D2 列相乘。 - C列单元格,例如C2改为KD
- 循环将移动到下一个 C 和 D 行,例如 C3 和 D3
推荐阅读
- arrays - 颠簸变换中字符串到数组的转换
- python - 删除一些大写的单词,但不删除小写的单词
- dart - 用于 Dart 的 Visual Studio Code 快速构造函数不起作用
- bootstrap-4 - Bootstrap 4 自定义控件没有光标指针
- java - 在 Java 中创建后台循环
- kotlin - 将数据类型作为参数传递给函数
- r - 使用 Rcpp 不能更快地获取 all()
- android - 如何从 fire-base 为不同的产品风格 Android 生成不同的 json 文件
- java - SQL Server 表中的单词搜索
- asp.net-core - Blazor - 更改 DI 服务的属性后,剃须刀页面未更新