如何在第 1 行中搜索 2 个条件,然后在该单元格正下方的列中搜索第二个条件,然后复制相邻数据?

问题描述 投票:0回答:1

我有由 python 吐出的数据表,我需要从中获取数据并将其传输到我设置的报告数据表。可能有多个样品、多个数据表,每个数据文件需要传输大约 30 种化合物,因此数据量很大。我们正在努力做到这一点,这样我们就不必将所有数据复制并粘贴到每个单独的工作表中,因为这对大多数人来说需要相当长的时间。一般来说,我对编码还很陌生,虽然我已经在设置工作表并为数据做好准备方面取得了很大的进展,但我只是无法弄清楚如何真正开始解决最后一步。

我本质上需要它读取第 1 行以查找包含特定值的单元格(例如,包含标题的单元格包含以下文本“_1.D”和“空气空白”),然后一旦发现单元格中,它将在该列中搜索每个化合物名称(化合物 1、化合物 2 等)。一旦找到该列中具有该名称的行,就需要从 4 个相邻列中获取该行中的数据。例如:它在第 1 行 A 列中找到第一个条件。然后搜索 A 列并发现化合物 1 位于第 3 行中。然后它将获取 B3:E3 列,复制该数据,并将其传输到化合物 1 工作表我已将(名称与 A 列单元格完全相同)放入一行,该行的名称与搜索条件(在本例中为 Air Blank)相同。

这是我第一次使用 Stack Overflow,所以我不确定是否有办法链接 Excel 工作表,但我制作了一个示例工作表。我无法提供实际数据,所以这是无意义的数据,但足以了解需要做什么。

我目前已经设置了代码,能够输入您想要从中提取数据的Python数据表(例如名为“121314”的表),然后它将转到该表以便能够开始搜索它需要移动的数据。但实际的“开始搜索”部分我完全迷失了。

我的模块中存在一个函数以及我将在下面发布的实际子函数:

Function WorksheetExists(WSName As String) As Boolean
    On Error Resume Next
    WorksheetExists = Worksheets(WSName).Name = WSName
    On Error GoTo 0
End Function
Sub FindAndAddData()

Dim rs As Worksheet
Dim shname As String

Do Until WorksheetExists(shname)
shname = InputBox("Enter sheet name")

If StrPtr(shname) = 0 Then
MsgBox ("User Cancelled!")
Exit Sub

Else
If Not WorksheetExists(shname) Then MsgBox shname & " doesn't exist!", vbExclamation

End If

Loop

Sheets(shname).Select

End Sub

可能完全有更好的方法来做到这一点,或者也许我对 Excel 的要求太多了。但我真的希望有一种方法可以让它发挥作用。我已经在这个工作表的编码和格式上工作了一个半月了,如果我不能设法让它工作,我会非常失望。

编辑: 下面的屏幕截图显示了 python 吐出的内容以及报告表的示例。

Python Spit out

Example Reporting Sheet

excel vba
1个回答
0
投票

我会完全跳过 VBA,只使用 FILTER 公式,就像

=FILTER(DataFromPython!B:E,DataFromPython!A:A="化合物 5")

或者,如果工作表上的单元格 B2 中有化合物 5:

=过滤器(DataFromPython!B:E,DataFromPython!A:A=B2)

FILTER 在 Excel 2019、2021 和 365 中可用,因此您很可能拥有它。

否则,Power Query 也可以工作,就像一大堆不同的公式一样......

© www.soinside.com 2019 - 2024. All rights reserved.