如图所示,SHEET3里的数组有多种类型,我只放了三个,每种类型列数也不一样,每组数组之间要隔开十几行,为了方便同类型有新型号时添加数据 ,SHEET1的6-20是引用数据单元格,B列类型,C列型号,D栏直径比如在SHEET1 B C D分别输入A类,ABS 14-则价格自动匹配0.3, 在SHEET1 B C D分别输入C类,ABZ 14-则价格自动匹配0.6,在SHEET1 B C D分别输入E类,ABM 30-则价格自动匹配1.1,以此类推
需要V8A代码
学习了字典后,我们知道从字典中读取数据速度超级快,所以我们今天就学习下如何利用字典实现查询功能。
一个表里存放着商品的信息,在采购单中输入商品编号时,希望品名,规格,单价能够自动匹配上去。
思路:
把商品信息写入字典,一个商品对应的有品名、规格、单价三个数据,一个item怎么装三个数据呢?这就是难点所在,如果能把品名、规格、单价三个数据写入一个item中,在采购单中输入商品编号时,在字典中查找key(商品编号)对应的item放入三个对应的单元格中即可。我们先看下代码:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim arr, d As Object, i%
Set d = CreateObject("scripting.dictionary")
arr = Sheets("商品信息").Range("a2", Sheets("商品信息").[d1].End(xlDown))
For i = 1 To UBound(arr)
d(arr(i, 1)) = Array(arr(i, 2), arr(i, 3), arr(i, 4))
————————————————
版权声明:本文为CSDN博主「舞蝶迷香径」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_34809240/article/details/112730015
如果你想在Excel中使用数组字典法实现这种自动匹配功能,可以按照以下步骤操作:
在SHEET3中,按照不同类型分别建立每个类型的数组表格,如A类、C类、E类等。每个数组表格需要包含型号、直径和价格等信息。
在SHEET1中,B列输入类型,C列输入型号,D列输入直径,E列输入价格。在价格列(E列)中,输入以下公式:
=VLOOKUP(D2,INDEX(SHEET3!$A:$D,MATCH(B2,SHEET3!$A:$A,0),0),3,FALSE)
其中,D2是直径单元格,B2是类型单元格,VLOOKUP是查找函数,INDEX是数组函数,MATCH是查找函数。具体解释如下:
INDEX(SHEET3!$A:$D,MATCH(B2,SHEET3!$A:$A,0),0)是一个数组函数,它按照类型查找SHEET3中对应的数组表格,并返回该表格中所有列的值。
MATCH(B2,SHEET3!$A:$A,0)是一个查找函数,它按照类型查找SHEET3中对应的数组表格,并返回该表格所在的行数。
VLOOKUP(D2,INDEX(SHEET3!$A:$D,MATCH(B2,SHEET3!$A:$A,0),0),3,FALSE)是一个查找函数,它在第二个参数中查找直径对应的价格,并返回对应的价格值。
输入公式后,将公式应用到所有单元格中,就可以实现自动匹配功能。
注意,如果新增了新的型号或者新的类型,需要在SHEET3中相应的数组表格中添加新的数据。这样,在SHEET1中就能自动匹配到新的数据了。
1. LOOKUP函数:LOOKUP函数用于在查找区域中查找指定的值,并返回相应的值。例如:=LOOKUP(B2,B3:B10,C3:C10) 将返回查找区域B3:B10中与B2匹配的值的相应项目列表中的值。
2. INDEX函数:INDEX函数返回数据表中指定区域内的单元格的值。例如:=INDEX(C2:D10,2,2) 将返回数据表中第2行第2列的单元格的值。
3. MATCH函数:MATCH函数用于在指定单元格区域中查找匹配项,并返回该匹配项的相对位置。例如:=MATCH(B2,A2:A10,0) 将返回在单元格区域A2:A10中查找B2相匹配的单元格的相对位置。
4. OFFSET函数:OFFSET函数返回指定单元格偏移量的单元格的值。例如:=OFFSET(B2,2,2)将返回B4单元格的值。
5. VLOOKUP函数:VLOOKUP函数用于在指定单元格区域中查找匹配项,并返回与该匹配项相对应的单元格的值。例如:=VLOOKUP(B2,A2:B10,2,0) 将在单元格区域A2:B10中查找B2相匹配的第2列,并返回与该匹配项相对应的单元格的值。
6. HLOOKUP函数:HLOOKUP函数与VLOOKUP函数类似,只是在水平方向上查找数据。例如:=HLOOKUP(B2,A2:D10,2,0) 将在单元格区域A2:D10中查找与B2相匹配的第2行,并返回该行中与该匹配项相对应的单元格的值。
以上是常见的一些Excel数组字典函数,您可以根据具体需要选择合适的函数来优化您的表格计算和数据分析。
在Excel中,可以使用多种方式表示数组和字典。下面是几个常见的方法:
数组公式:使用大括号{}将多个数值或公式组合成一个数组,然后在公式前面加上等号=,并按下 Ctrl+Shift+Enter 快捷键,使公式成为数组公式。
例如,下面的公式可以将 A1:A5 区域内的数值相加并返回总和:
scssCopy code=SUM(A1:A5)如果要将这个公式转换为数组公式,可以使用以下公式:
scssCopy code{=SUM(A1:A5)}动态数组函数:Excel 365版本中新增了一些动态数组函数,如SORT、FILTER、UNIQUE、SEQUENCE等,这些函数可以帮助用户更方便地进行数组操作。
例如,以下公式可以将 A1:A5 区域内的数值按从大到小的顺序排序:
scssCopy code=SORT(A1:A5,1,-1)数据透视表:数据透视表可以将一组数据分组并汇总,以便于分析和报告。数据透视表中的行标签、列标签和值可以表示为数组和字典的形式。
例如,以下数据透视表可以显示销售部门在各个月份中的销售额:
Copy code行标签:销售部门列标签:月份
值:销售额(求和)
名称范围:Excel 中可以使用名称范围来引用一组单元格,这些单元格可以被视为数组或字典的元素。
例如,以下名称范围可以表示一组产品名称和对应的价格:
makefileCopy code名称:产品价格引用:A1:B10这个名称范围可以用以下公式来引用产品名称和价格:
scssCopy code=INDEX(产品价格,1,1) //返回第一个产品名称=INDEX(产品价格,1,2) //返回第一个产品的价格首先,在SHEET3中,将每个类型的数据分别放在不同的区域中,并使用名称管理器来命名每个区域,例如将类型A的数据命名为“TypeA”,将类型B的数据命名为“TypeB”,以此类推。
然后,在SHEET1中,在B列中输入数据类型,例如“A”,在C列中输入型号,例如“ABS 14-”,在D列中输入直径,例如“14”,然后在E列中使用VLOOKUP函数来查找相应的价格。具体公式如下:
=VLOOKUP(B2,TypeA,MATCH(D2,TypeA!$1:$1,0),TRUE)*IF(ISNUMBER(SEARCH("-",C2)),IFERROR(VALUE(RIGHT(C2,LEN(C2)-FIND("-",C2))),""),"")
这个公式将在TypeA区域中查找与B2单元格匹配的值,并在TypeA区域中匹配与D2单元格匹配的列。然后,使用IF函数和SEARCH函数来获取C列中的直径数据,并使用VALUE函数将其转换为数值。最后,将结果乘以VLOOKUP函数返回的价格,以获取最终的价格。
对于其他类型的数据,只需在VLOOKUP函数中更改数据区域的名称即可,例如将TypeA更改为TypeB或其他类型的名称。
注意:由于不同类型的数据列数不同,因此在使用VLOOKUP函数时,需要使用MATCH函数来获取正确的列号。