【问题标题】:Find a value and copy multiple values after an offset from 2 workbooks从 2 个工作簿偏移后查找一个值并复制多个值
【发布时间】:2018-03-27 22:39:54
【问题描述】:

我在让它工作时遇到了一些麻烦。我已经尝试了几种不同的方法来做到这一点,但我的结果是空的。

我想在一个工作簿中取一个,然后在另一个工作簿的列中找到它,然后进行偏移并复制6列 信息(1 行,6 列,因此 6 个值)并将它们粘贴回原始工作簿中。

我从 similar 问题中获得了以下代码,但它只是带回了一大列带边框的单元格......对此感到困惑。这段代码只是我试图找到值,遍历 19 列,复制该值,并将其带回第一个工作簿。最终我想抓住前面提到的 6 个值...

Sub findgage()
Dim gage As String

gage = Worksheets("Caliper").Range("C4").Value

With Workbooks.Open(Filename:="[path]\IMTECOPY.xlsx", ReadOnly:=False)


    With .Worksheets("All").Range("B1:B1000")
      .AutoFilter 1, gage
      Range("S" & ActiveCell.Row & ":X" & ActiveCell.Row).Select


    End With

End With
End Sub

UPDATE 好的,所以上面的代码几乎完全按照我想要的方式执行,但它选择了“活动行”下方的行的 6 个单元格。我在这里想念什么?我没有看到任何让它这样做的东西......

这是它正在选择的图片:

知道它为什么会往下跳吗?

【问题讨论】:

  • 1.如果 gage 在 C4 中,为什么要将结果粘贴到 J15 中? 2. .offset(1, 19) 是指从第 19 列(S 列)开始,还是从 B 列右侧第 19 列(U 列)开始?
  • 您能否在您的问题中发布您的(样本)数据。这样我们就可以了解您在看什么
  • 如果您发布了您正在使用的内容和尝试执行的操作的示例(可能是屏幕截图?),这将更有意义。问题的一部分是,您的问题(以及解决方法)基于认为 Excel 的能力 在 Excel 中完成任何任务的方法有很多,而您似乎坚持只有一个,这可能不是最好的方法。例如,为什么是 19?什么东西在那里?有没有比“19 over”更好的列标题或其他东西?如果电子表格发生变化会发生什么?你要复制什么样的数据?连接细胞呢?
  • C4 是用户输入值的单元格。我希望代码在另一个工作簿中查找该值,当它找到它时,转到右侧的 19 列并复制接下来的 6 个值,然后将它们带回原始工作簿。 J15 只是我希望数据进入的随机单元格。

标签: excel vba find multiple-columns copy-paste


【解决方案1】:

试试这个

Sub findgage()
    Dim gage As String

    gage = Worksheets("Caliper").Range("C4").Value

    With Workbooks.Open(Filename:="[path]\IMTECOPY.xlsx", ReadOnly:=True)
        With .Worksheets("All").Range("B1:B1000")
          .AutoFilter 1, gage
          Worksheets("Caliper").Range("J15").Resize(, 6).Value = .Offset(1).Resize(, 6).Value
          .AutoFilter
        End With
        .Close False
    End With
End Sub

【讨论】:

    【解决方案2】:

    让它工作。最后。有很多零碎的东西。

    Sub findgage()
        Dim gage As String
    
        gage = Worksheets("Caliper").Range("C4").Value
    
        With Workbooks.Open(Filename:="[path]\IMTECOPY.xlsx", ReadOnly:=False)
       ' Dim myrange As String
    
            With .Worksheets("All").Range("$B:$B")
              .AutoFilter 1, gage
    
    ActiveSheet.AutoFilter.Range.offset(1).SpecialCells(xlCellTypeVisible). 
    _Cells(1, 2).Select
            thisrow = ActiveCell.Row
    
    dataset = Range("S" & thisrow & ":X" & thisrow).Value
    
    Workbooks("Book1").Sheets("Caliper").Range("G14:L14") = dataset
    Workbooks("IMTECOPY.xlsx").Close False
    
    
    
        End With
    
    End With
    End Sub
    

    这将打开日志,将其过滤为我们正在寻找的量具编号,选择我们需要查看的 6 列中的值,并将它们带回原始工作簿。我真诚地希望其中的一些内容对其他人有所帮助,因为这是一项愚蠢的工作和挫败感。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-09
      • 1970-01-01
      • 1970-01-01
      • 2017-09-08
      • 1970-01-01
      • 1970-01-01
      • 2023-02-02
      • 2013-10-21
      相关资源
      最近更新 更多