【问题标题】:Excel VBA with Index Match具有索引匹配的 Excel VBA
【发布时间】:2020-09-02 02:33:49
【问题描述】:

一直在尝试解决以下问题,但到目前为止没有运气,寻求您的帮助:

  1. vba 公式返回额外的两个“@”,如何修复代码或删除单元格 R1 中的“@”?

  2. 如果我想循环并运行从单元格 R1 到 R30 的 vba 代码,我应该修改哪部分代码?

     Dim PartPoError As Range
     Dim PART As Range
     Dim PO As Range
     Dim lastrow As Long
    
    
       lastrow1 = Sheets("TEMPLATE").Cells(Rows.Count, "A").End(xlUp).Row
       x = "J" & lastrow1
       t = "A" & lastrow1
       V = "B" & lastrow1
    
       Set PartPoError = Sheets("rpt_sense").Range("A1", x)
       Set PART = Sheets("rpt_sense").Range("A1", t)
       Set PO = Sheets("rpt_sense").Range("B1", V)
    
       With Worksheets("rpt_sense")
         .Range(.Cells(2, 23), .Cells(lastrow1, 23)).ClearContents
         .Range(.Cells(2, 23), .Cells(lastrow1, 23)).Formula = "=A2&B2"
       End With
    
       lastrow2 = Sheets("template").Cells(Rows.Count, "A").End(xlUp).Row
    
       For s = lastrow2 To 16 Step -1
      If Sheets("template").Cells(s, 10).Value = "" Then
    
          ' Stuck in below formula error....it retunred with extra two "@" in cell formula R1.....
    
          Sheets("template").Cells(s, 10) = "=INDEX('rpt_sense'!r:r" & ",MATCH('template'!c8" & "&'template'!B" & s & ",'rpt_sense'!a:a" & "&'rpt_sense'!f:f" & ",0),1)"
    
         End If
    
         Next s    
    

picture file - index match id and date in yellow from another worksheet

picture 2 - data from another worksheet

【问题讨论】:

  • 在公式中添加@ 本身并没有错误。 Excel 添加了这个来控制溢出,这很可能是你想要的。真正的问题是,这个公式有效吗?另一个是您是否想要单元格中的公式或其结果。我总是不太愿意让 VBA 编写公式而不是自己完成工作(可能使用相同的函数)。
  • 您好,感谢您的信息并注明。该公式不适用于额外的“@”,我需要用 CTRL + H 将其替换为空白。我这样做的原因是因为我有一个从 R1 到 R30 的范围需要搜索和查找另一个数据工作表,我正在寻找更好的方法来做到这一点。
  • 如果您告诉我们查找值、数据在哪里以及您想要的结果在哪里,我们可能会想出您想要的代码。但就目前情况而言,我们无法通过查看不起作用的代码来了解您需要什么。尝试另一种方法来解释您的问题。
  • .Formula2(例如rng.Formula2 = "=...")呢? @talentgreatness

标签: excel vba


【解决方案1】:

如果您想通过 id 和 date 查找销售额和收入,我认为您不需要 vba 代码:

以下是根据两个标准查找销售额的公式:

=INDEX(Sheet2!C2:C3,MATCH(1,INDEX((Sheet3!ID(cell)=Sheet2!A2:A3)*(Sheet3!date(cell)=Sheet2!B2:B3),0, 1),0))

这里 1.Sheet2 = 存储数据的位置。 2.sheet3 = 你想在哪里找到销售额和收入 3.使用ID作为绝对参考 3.使用日期作为相对参考。 让我知道它是否有效。

【讨论】:

  • 您好,我在单元格中插入公式时收到此错误提示:“此公式有问题。不尝试键入公式?当第一个字符是等号 (=) 或减号 ( -) 符号,excel 认为这是一个公式......"
  • 你能分享文件吗??
  • 您好,非常感谢您的帮助,您的视频很酷,很有帮助!
【解决方案2】:

对不起,我不完全理解你想要做什么..你能分享一下你最终输出的截图吗..

 Dim PartPoError As Range
Dim PART As Range
Dim PO As Range
Dim lastrow As Long


lastrow1 = Sheets("TEMPLATE").Cells(Rows.Count, "A").End(xlUp).Row
 
'I think this variant variable is not required if you just want to use range.

x = "J" & lastrow1
t = "A" & lastrow1
V = "B" & lastrow1
'The change will be like this.
Set PartPoError = Sheets("rpt_sense").Range("A1","J" & lastrow1)
  Set PART = Sheets("rpt_sense").Range("A1", "A" & lastrow1)
  Set PO = Sheets("rpt_sense").Range("B1","B" & lastrow1)

  With Worksheets("rpt_sense")
 .Range(.Cells(2, 23), .Cells(lastrow1, 23)).ClearContents
 .Range(.Cells(2, 23), .Cells(lastrow1, 23)).Formula = "=A2&B2"
   End With

   lastrow2 = Sheets("template").Cells(Rows.Count, "A").End(xlUp).Row

   For s = lastrow2 To 16 Step -1
  If Sheets("template").Cells(s, 10).Value = "" Then
  'Please clear what actually you want to do here..
  ' Stuck in below formula error....it retunred with extra two "@" in cell formula R1.....

  Sheets("template").Cells(s, 10) = "=INDEX('rpt_sense'!r:r" & ",MATCH('template'!c8" & "&'template'!B" & s & ",'rpt_sense'!a:a" & "&'rpt_sense'!f:f" & ",0),1)"

 End If

 Next s    

【讨论】:

  • 您好,我在上面插入了一个图片文件,我想使用具有两个条件的索引匹配从另一个工作表中搜索数据 - id(单个单元格)和日期(30/31 天)循环,有没有更好的方法来实现这一点?
  • 所以您想根据 ID = 123 和日期 (01-Aug-20) 从工作表中进行搜索,对吗?那么哪个通过了这两个标准,那么数据需要粘贴到 R1 列中?您能否提供另一个包含数据的工作表屏幕截图??
  • 您好,我在上面的链接中提供了图片 2,感谢您的帮助。
猜你喜欢
  • 2011-11-26
  • 2021-09-02
  • 2016-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-04
  • 1970-01-01
相关资源
最近更新 更多