【发布时间】:2014-08-28 05:52:48
【问题描述】:
我是 VBA 的初学者,刚开始尝试编写一个宏来自动化 Excel 中的以下过程。
我有 2 个汇率,一个是 BUY RATE(R 栏),一个是 SELL RATE(S 栏)。我要做的是比较 2 个评级并选择更高的评级,除非买入货币(E 列)是美元。 然后我想将所选的相关评级输入到 T 列中。
但是,我尝试在不使用“.Activecell”和“.Select”的情况下为后续行执行此操作。但我不太确定该怎么做。
实际上,我想要完成的还有第二部分。因为我正在尝试一步一步地学习和弄清楚。
无论如何,我有 2 个工作表,在工作表 1 中,我有一个索引号列表(A 列)以及上面 T 列中要计算的评级。
在工作表 2 中,我有另一个索引号列表(但后面有额外的“00”)(A 列)。然后,每个索引号在一个单元格(M 列)中有一个对应的字母,在另一个单元格(I 列)有一个数字。
我需要做的是从工作表 2 中检索匹配的字母和数字,将它们放在一起,然后与工作表 1 中的评分进行比较,看看它们是否匹配。 我已经列出了完成这项任务所要采取的步骤,但我似乎还不知道该怎么做
1)从工作表 1 中检索索引号并与“00”连接
2)使用上面的值做一个查找函数,以检索相应的索引号和字母。
3) 将上述“字母”和“数字”连接在一起(在工作表 1 中输入新单元格(C 列)
4) 将风险等级与从步骤 3 中获得的值进行比较
5)如果 Risk Rating
6) 对工作表 1 中的每个索引号重复。(工作表 1 中的索引号数量每周变化)
按照提供的链接,我想出了以下语法。
子比较() 将 sht2 调暗为工作表 将 last_row 调暗为整数 将 row_no 暗淡为整数 Dim buyccy As String 将 selccy 调暗为字符串 将buyrate作为字符串 将 selrate 变暗为字符串 Dim y As String
Set sht2 = Sheets("sheet2")
last_row = sht2.Cells.Find(What:="*", After:=[A1], LookIn:=xlValues, SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
For row_no = 2 To last_row
If IsError(sht2.Range("R" & row_no)) Or IsError(sht2.Range("S" & row_no)) Then
y = "#N/A"
Else
buyrate = sht2.Range("R" & row_no)
selrate = sht2.Range("S" & row_no)
buyccy = sht2.Range("E" & row_no)
selccy = sht2.Range("G" & row_no)
If buyrate >= selrate And buyccy = "USD" Then
y = selrate
ElseIf buyrate >= selrate And buyccy <> "USD" Then y = buyrate
ElseIf buyrate < selrate And selccy = "USD" Then y = buyrate
Else: y = selrate
End If
sht2.Range("T" & row_no).Value = y
Next
Set sht2 = Nothing
End Sub
虽然我不太确定我哪里出错了。抱歉,但我对 VBA 真的非常陌生。真诚地感谢您对此提供的任何见解。
【问题讨论】:
-
我们将避免识别
Select! this link 可能会让你开始 -
你为什么要通过 VBA 来做这个?你能不能只在 T2 中放一个工作表公式并将其复制到你的范围内? (
=IF(R2=S2,R2,IF(AND(R2>S2,E2="USD"),R2,S2))) -
@Captain 实际上我想要完成任务的第二部分。仍然是新事物,因此试图弄清楚并一次学习一步。我实际上已经用整个工作过程编辑了上面的问题。如果你能提供一些关于我如何去做的见解,我将不胜感激。谢谢