excel中如何应用函数将符合条件的全部列出来。 20
表一中内容品种到货重量接货人苹果300张三香蕉65李四葡萄45王五葡萄487张三苹果154张三香蕉14张三如何在表二中某单元格输入苹果出现如下内容苹果300张三154张三...
表一中内容
品种 到货重量 接货人
苹果 300 张三
香蕉 65 李四
葡萄 45 王五
葡萄 487 张三
苹果 154 张三
香蕉 14 张三
如何在表二中某单元格输入苹果出现如下内容
苹果 300 张三
154 张三 展开
品种 到货重量 接货人
苹果 300 张三
香蕉 65 李四
葡萄 45 王五
葡萄 487 张三
苹果 154 张三
香蕉 14 张三
如何在表二中某单元格输入苹果出现如下内容
苹果 300 张三
154 张三 展开
7个回答
展开全部
假定A列有100行数据,B列有200行数据,均从A1开始,要求把A列中包含在B列的数据列出来。
公式:
=index(a:a,small(if(countif(b$1:b$200,a$1:a$100),row($1:$100),4^8),row(a1)))&"" 该公式是数组公式,需要按组合键ctrl+shift+enter结束公式,下拉填充。
说明:
1、if与countif函数配合将符合条件的赋予自然数序列,对不符合条件的赋值为655336
2、用small函数对符合条件的编号按从小到大的顺序排列。
3、用index函数配合row函数依次将符合条件的值一一列出。
公式:
=index(a:a,small(if(countif(b$1:b$200,a$1:a$100),row($1:$100),4^8),row(a1)))&"" 该公式是数组公式,需要按组合键ctrl+shift+enter结束公式,下拉填充。
说明:
1、if与countif函数配合将符合条件的赋予自然数序列,对不符合条件的赋值为655336
2、用small函数对符合条件的编号按从小到大的顺序排列。
3、用index函数配合row函数依次将符合条件的值一一列出。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个用VBA实现非常的方便,
可以在你要输入品种的单元格自动得到表一品种的下拉序列,可以选择品种即可,当选择品种时,自动得到结果。
不知道你会使用VBA吗?
代码如下
Private Sub Worksheet_Change(ByVal Target As Range) '这是选择品种后自动生成数据的
Dim arr, brr(), x&, i&, y&, str1$
If Target.Address = "$A$1" Then
str1 = Target.Value
arr = Sheet1.UsedRange
For x = 2 To UBound(arr)
If arr(x, 1) = str1 Then
i = i + 1
ReDim Preserve brr(1 To UBound(arr, 2) - 1, 0 To i)
For y = 2 To UBound(arr, 2)
brr(y - 1, i) = arr(x, y)
Next y
End If
Next x
For y = 2 To UBound(arr, 2)
brr(y - 1, 0) = arr(1, y)
Next y
Range("B1:E65536").ClearContents
Range("B1").Resize(UBound(brr, 2) + 1, UBound(brr)) = Application.Transpose(brr)
End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range) '这是自动生成品种的下拉菜单的
Dim d As Object
Dim arr, x&
Set d = CreateObject("scripting.dictionary")
If Target.Address = "$A$1" Then
arr = Sheet1.UsedRange
For x = 2 To UBound(arr)
d(arr(x, 1)) = ""
Next x
With Target.Validation
.Delete
.Add Type:=xlValidateList, Formula1:=Join(d.keys, ",")
End With
End If
End Sub
如果不会,你也可以用高级筛选完成
可以在你要输入品种的单元格自动得到表一品种的下拉序列,可以选择品种即可,当选择品种时,自动得到结果。
不知道你会使用VBA吗?
代码如下
Private Sub Worksheet_Change(ByVal Target As Range) '这是选择品种后自动生成数据的
Dim arr, brr(), x&, i&, y&, str1$
If Target.Address = "$A$1" Then
str1 = Target.Value
arr = Sheet1.UsedRange
For x = 2 To UBound(arr)
If arr(x, 1) = str1 Then
i = i + 1
ReDim Preserve brr(1 To UBound(arr, 2) - 1, 0 To i)
For y = 2 To UBound(arr, 2)
brr(y - 1, i) = arr(x, y)
Next y
End If
Next x
For y = 2 To UBound(arr, 2)
brr(y - 1, 0) = arr(1, y)
Next y
Range("B1:E65536").ClearContents
Range("B1").Resize(UBound(brr, 2) + 1, UBound(brr)) = Application.Transpose(brr)
End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range) '这是自动生成品种的下拉菜单的
Dim d As Object
Dim arr, x&
Set d = CreateObject("scripting.dictionary")
If Target.Address = "$A$1" Then
arr = Sheet1.UsedRange
For x = 2 To UBound(arr)
d(arr(x, 1)) = ""
Next x
With Target.Validation
.Delete
.Add Type:=xlValidateList, Formula1:=Join(d.keys, ",")
End With
End If
End Sub
如果不会,你也可以用高级筛选完成
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
高级筛选
在表中A1和B1写入两个条件
A1 品种 接货人
A2 苹果 张三
然后点高级筛选
1.将数据Copy到另一个位置
2.数据区域,选择表1的数据区域
3.筛选条件选择表2中的A1到B2
4.copy的数据位置,选择表2的C1
然后确认。
在表中A1和B1写入两个条件
A1 品种 接货人
A2 苹果 张三
然后点高级筛选
1.将数据Copy到另一个位置
2.数据区域,选择表1的数据区域
3.筛选条件选择表2中的A1到B2
4.copy的数据位置,选择表2的C1
然后确认。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询