我将概述我试图完成的步骤:
1)通过电子表格搜索通过匹配的#ct。
2)如果存在,我将向右添加偏移#__单元格并选择该单元格。
3)将所选单元格的公式设置为Concatenate("ColumnLetter&Match(A1:A1000"",0) + Concatenate("ColumnLetter&Match(A1:A1000"",0)
FX Debt 1,000
Fx Equity 2000
U.S Debt 4,000
U.S Loans 5,000
Recon 1 Recon 2 Diff
11111 $ Debt 0
11112 FX Debt
因此,我使用"11111"
搜索帐户=match(A1:1000, "11111", 0)
。如果它存在,我将偏移到它的右边,然后选择该单元格。然后我将一个公式添加到选定的单元格中,这将添加Cell引用。
我认为它会看起来像以下几行:
If Match(A1:A1000,"11111",0)=true
Select(A&(result from match))
Offset(three to right).select
修改
因此,为了使下一步不那么模糊,我将其与代码示例的其余部分分开......首先让我用它来解释目标。上面的样本数据分为两个表格......第一个表格结束,例如一般账户美国贷款--- 5,000。第二个从Acct#和Recon 1开始。我的目标是添加包含值的某些单元格(不是值本身,我希望能够使用先例和依赖项追溯到帐户 )第一个表中的一般acct到选定的偏移单元格中。我认为我这样做的方法是搜索acct名称,例如" FX Debt",就像David建议找到Acct#一样,我然后使用类似的偏移方法将包含1000的单元格(例如B2)添加到帐户#右侧的原始偏移中。
结束修改
编辑2
Dim searchRange as Range
Dim myMatch as Variant
Set searchRange = Range("A1:A1000")
myMatch = Match("11111", searchRange, 0)
If Not IsError(myMatch) Then
rng.Cells(myMatch).Offset(,3).Formula = Sum(Match("U.S Debt", searchRange, 0).Offset(,2)+(Match("U.S Debt", searchRange, 0).Offset(,2))...
End If
这更有意义吗?我试图将与美国债务和美国贷款相关的金额添加到主账户($ Debt)。
结束编辑2
答案 0 :(得分:0)
1)通过电子表格搜索通过匹配的#ct。
2)如果存在,我会在右边添加偏移#__单元格并选择它 细胞
3)将选中的单元格公式设置为 连接(“ColumnLetter& Match(A1:A1000”“,0)+ :连接( “ColumnLetter&安培;匹配度(A1:A1000””,0)
不要打扰Selecting
单元格。大约99%的时间(可能更多)是不必要的。更多细节,这里:
How to avoid using Select in Excel VBA macros
此外,您的Match
语法错误。你需要这样做:
=Match("11111", A1:A1000, 0)
所以,把它们放在一起,比如:
Dim searchRange as Range
Dim myMatch as Variant
Set searchRange = Range("A1:A1000")
myMatch = Match("11111", searchRange, 0)
If Not IsError(myMatch) Then
searchRange.Cells(myMatch).Offset(,3).Formula = ...
End If
我没有尝试解释下面给出的公式字符串;我不确定我理解它应该做什么:
sum(((Column Number -->)"I" + match(A1:A1000,"",0)+("I"+match(A1:A1000,"",0))
但至少我们可以使用myMatch
变量整合您的伪代码:
sum(((Column Number -->)"I" + myMatch+("I"+myMatch)
(提醒一句:+
运算符可以用于连接字符串,但有几个原因可以优先考虑&
运算符,尤其是{{当一个参数是数字类型时,运算符是不明确的,默认为数学 + 运算符。换句话说,它试图添加一个数字和一个字符串,这将导致不匹配错误(
所以修改为:
+
即使在清理完之后,我仍然不确定您要使用上述公式做什么,但如果您可以尝试解释那么我可能会提供帮助。