首页 > 解决方案 > 根据货币乘以每个单元格

问题描述

大家好,感谢您的时间,我知道我应该自己做一些工作,但我真的不知道从哪里开始。

我有一张 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"

结束子

标签: vba

解决方案


这是编写代码进行检查的一种方法,如果货币不是 KD,则乘以汇率,并将 C 列单元格更改为 KD。

  1. 将 KD 的比率存储在变量中,
  2. 使用循环一起遍历每一行的 C 和 D 列,
  3. 我将有一个if语句来检查 C 列中的每个单元格,例如 C2,然后如果它不是 KD,则使用具有 KD 率的变量并将其与 D2 列相乘。
  4. C列单元格,例如C2改为KD
  5. 循环将移动到下一个 C 和 D 行,例如 C3 和 D3

推荐阅读