gpt4 book ai didi

Excel - 基于与某些文本匹配的行中的值的下拉列表值

转载 作者:行者123 更新时间:2023-12-04 21:01:18 24 4
gpt4 key购买 nike

我在一个 Excel 工作表中有一个主表:

Main table

另一个工作表中的 Products 表(在名称管理器中名为 Products):

Products table

我想要的是从 Products 表中查找主表中下拉框中的可用值。例如,在第一个屏幕截图中选择的单元格旁边有“模型”一词。因此,我想浏览 products 表,查找“type”列中包含“model”一词的任何行。当我们找到它时,我希望“名称”列中的值在下拉列表中可用。我希望产品表中的每一行在“类型”列中都有“模型”。

毕竟,我们移动到第一个范围内的下一个单元格,它旁边有“图形”。这一次,我想浏览一下,在 Products 表中查找“图形”。等等等等。

在尝试这样做时,我在名称管理器中使用了这个公式,并将其用作单元格下拉列表的来源:

=INDEX(Products[[#Data],[Name]],MATCH("Model",Products[[#Data],[Type]],0))



但是,这样做的问题是只有第一个匹配项出现在列表中。换句话说,它有效,但列表只有一项长。我找到了 this帖子与我正在尝试做的非常相似。

最佳答案

我这样做的方式将涉及帮助列和一个简单的宏,并且会做你想做的事。

第 1 部分:VBA 宏

此宏将对价目表中的项目进行排序。每次添加新项目时都应该运行它:

Sub Sorter()

Sheets("Products").select
Range("A:D").Select
ActiveWorkbook.Worksheets("Products").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Products").Sort.SortFields.Add Key:=Range("B:B") _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("Products").Sort.SortFields.Add Key:=Range("C:C") _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Products").Sort
.SetRange Range("A:D")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub

第 2 部分:产品助手列:

在产品表的 F 列中插入以下公式:

F 列(单元格 F2): =B2&"-"&C2
如果在不同类别下有多个具有相似名称的商品,则此公式将用于获取商品的价格。

products sheet

第 3 部分:下拉列表 Helper 列

在下拉列表工作表中,使用以下公式在 G 列中添加一个新的帮助器列:
="Products!$C"&MATCH($A2,Products!$B:$B,0)&":$C"&SUM(COUNTIF(Products!$B:$B,$A2),MATCH($A2,Products!$B:$B,0)-1)

Dropdown Sheet

数据验证公式应使用间接方法查看单元格 G 中显示的范围(例如: =INDIRECT($G2)
附上文件链接 here .

您可以隐藏帮助列,但要确保在添加新项目时拖动公式。

要获取商品价格,请使用以下公式:
=SUMIF(Products!$F:$F,'Drop Down'!$A2&"-"&'Drop Down'!$B2,Products!$D:$D)

这将确保如果 2 个类别具有相似的项目名称,则价格将为预期的项目。

我希望这有帮助。

关于Excel - 基于与某些文本匹配的行中的值的下拉列表值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35830660/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com