[英]Find in string with Excel and VBA?
我有一个包含一些工作表的电子表格,一个工作表是产品库存,一个工作表是材料库存...
我试图弄清楚如何在另一个工作表中查找产品代码,从产品清单中提取描述,并从材料清单中提取所需的材料。 我知道如何用其他语言来执行此操作,但我仅限于Excel,并且不知道如何执行。
假设我有Product Lookup:$B$2 = "ps26k417"
,我已经从Product Inventory
中获取了相关信息,其中包含了产品说明, Garden Gate Indigo/Linen Natural 26x26 KE Fiber Pillow*
但现在我需要弄清楚如何拉从材料库存
从该产品描述中,我需要从“物料清单”工作表中拉出两行。.我需要一种基于描述提取信息的方法,在此示例中,我需要417 Garden Gate Indigo/Linen
的行和554 Linen Natural/S Backed
的行554 Linen Natural/S Backed
甚至值得在Excel宏中进行深入介绍吗?
根据您需要执行的其他操作,我将为此构建一个结构合理的Access数据库。 您需要3个表格:产品,物料和BOM(物料清单)。
BOM将包含3个字段:ProductId,MaterialId,数量。
有了这些,再加上简单的参数查询,就可以解决您的问题。
如果ProductInventory工作表中的每个结果准确地转换为MaterialInventory工作表中的两个条目,则最简单的选择是使用两个VLOOKUPS公式。
如果您想沿用VBA路线,则可能需要如下代码:
Public Sub SearchForMaterial(materials() As String)
Dim N As Long
Dim materialsList As Range
Set materialsList = ' Set to the relevant range
Dim cell As Range
Dim output(UBound(materials) - LBound(materials)) As String
Dim outputCount As Long
For N = LBound(materials) To UBound(materials)
For Each cell In materialsList.Cells
If cell.Value = materialsList(N) Then
output(outputCount) = cell.Offset(ColumnOffset:= ??)
End If
Next cell
Next N
End Sub
这段代码不是特别有效。 您说自己有其他语言的经验,因此希望这足以使您入门。
我放弃了尝试仅使用Excel和VBA来解决这个问题。 我制作了一个PHP脚本,该脚本转换了我在“ Products
和Materials
工作表中所需的所有列,将所有内容都放入一个MySQL数据库中,将其全部提取为CSV并创建了一个新的电子表格。
产品表是否具有唯一ID? 材料表是否具有与产品表相关的外键?
如果没有...为什么不呢? 与使用文本值进行搜索相比,这将使事情变得容易和快捷得多。
查看此链接以在excel中使用SQL。 如果您具有唯一ID,应该会很容易。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.