从匹配结果和列字母连接行号,并将结果存储为变量的地址

时间:2016-12-08 20:02:45

标签: vba excel-vba excel

我将概述我试图完成的步骤:

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

1 个答案:

答案 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)

(提醒一句:+运算符可以用于连接字符串,但有几个原因可以优先考虑&运算符,尤其是{{当一个参数是数字类型时,运算符是不明确的,默认为数学 + 运算符。换句话说,它试图添加一个数字和一个字符串,这将导致不匹配错误(

所以修改为:

+

即使在清理完之后,我仍然不确定您要使用上述公式做什么,但如果您可以尝试解释那么我可能会提供帮助。