从一个列表中的特定词采摘的所有数据。

大家好

我不知道是否有用于显示从一个长长的清单包含特定单词的单元格的任何方法或公式。 我想更正,但如果第一个词键入这只会显示,如果它是独一无二的。

下面,如果我的产品清单。 我想在产品列表底部键入“黑暗”,并想看看如果两个产品的“黑”字出现在任何地方,而不是通过完整列表去。

提前致谢

巧克力朋友12x100g
莱布尼茨巧克力牛奶巧克力12x150g
德利杰12x100g
Deloba 12x100g
Deloba蓝莓12x100g
打玩转棒8x140g
Messino黑暗12x125g
Messino黑暗诱惑12x125g
迷你巧克力莱布尼茨12x125g
PICK UP 24X28G RRP 40P
Xtra的美味焦糖12x130g
Bakalland罂粟籽质量6X850g
Balconi巧克力甜点蛋糕6x400g
Balconi Tiramusu蛋糕6x400g
Balconi维也纳,维也纳蛋糕6x400g
Balconi 10巧克力拿铁酒吧15X280gr

--------------解决方案-------------

事实上,你的第二个问题是由于与MS的执行XML格式的问题; 和的第一个问题是由于该列表的长度,在Excel 2007,似乎超过8,000个字符被限定于一个比特。

更改宏放置确认名单上的另一个工作表缓解这两个问题。 你会注意到,我们也使剑的变化,所以可以直接写入范围; 而且排序工作表上的名单,而不是在VBA宏,使我们能够去除排序宏。

我也注意到你已经决定不使用事件宏触发过滤器,而是一个按钮。 没关系。

如何你现在做的数量和C / S的进入和复制?

我仍然认为整个事情可能与用户表单更好。 我去看看我能工作的东西了。

============================================

显式的选项
公共rDropDown由于范围
子FindWord()
昏暗RLIST为靶场,VLIST为Variant
昏暗colWords为集合
昏暗的剑()作为字符串
昏暗V作为变
昏暗我只要,J只要

Application.ScreenUpdating =假

随着工作表(“订单”)
设置rDropDown = .Range(“A1”)
设置RLIST = .Range(“A5”)

“取消隐藏所有行,并关闭自动筛选
如果.AutoFilterMode然后.AutoFilterMode =假
.Columns(1).EntireRow.Hidden =假

“获取全系列
设置RLIST =范围(RLIST,列(1).Find(什么:=“*”,后:= [A1],看着:= xlFormulas,searchdirection:= xlPrevious))
结束与

“生成单词表
VLIST = RLIST
设置colWords =新集合
在错误恢复下一页
对于i = 2到UBound函数(VLIST,1)
V =拆分(VLIST(I,1),“”)
对于j = 0到UBound函数(V)的
colWords.Add项目:= CStr的(V(J)),键:= CStr的(V(J))
下面j
接下来,我
对错误转到0

使用ReDim剑(1至colWords.Count,1比1)
对于i = 1到colWords.Count
SWORDS(I,1)= colWords(I)
接下来,我

“写单词表来临时,不可见,工作表
Application.DisplayAlerts =假
上的错误继续下一步'的情况下,温度不存在
工作表(“TEMP”)。删除
对错误转到0
Application.DisplayAlerts = TRUE

Worksheets.Add
随着ActiveSheet
。名称=“TEMP”
。可见=假
。.Range(“A1”)调整(ROWSIZE:= UBound函数(剑))NAME =“MyWordList”。
结束与

随着范围(“MyWordList”)
.value的剑=
的.sort KEY1:=列(1),order1:= xlAscending,部首:= xlNo,MatchCase:=假
结束与

随着rDropDown.Validation
。删除
。新增类型:= xlValidateList, 一级方程式:=“= MyWordList”
结束与

rList.AutoFilter字段:= 1,标准1:=“*”&rDropDown&“*”

Application.ScreenUpdating = TRUE

结束小组
==================================================

嗨,

在这里,我把关键字在C1。 选择A1(或列表的第一个单元格),然后拖动选择所有数据,那么: -

主页选项卡| 条件格式| 新规则| 用一个公式来决定格式,电池和输入公式

= ISNUMBER(FIND($ C $ 1,A1))

单击格式按钮| 填写标签并选择一种颜色,OK了。 在此,关键字出现的细胞会被高亮显示。

更改$ C $ 1公式中使用关键字的单元格,并更改A1到您拖动选择所有数据前选择第一个单元格。 确保你保持$迹象C1。

最简单的方法是:在列应用过滤器,并选择在文本过滤器C ontains,并把所需的单词在那里例如黑暗

感谢这个维杰。 然而,用书面方式让我们说100行......理想情况下,你demonstarate什么(正确结果的方式)不应该超过2点击即可下订单时,这种方法是有点慢。

你的要求还不完全清楚我。

如果你想要做的是突出包含单词你输入的单元,则可以简单地使用条件格式,并使用搜索​​功能来突出这些细胞。

如果你想返回这些行不同的范围; 或隐藏不包含所需的字行,那么你可以使用过滤器,常规或高级取决于什么是要为你工作。

这里的条件格式方法的一个例子,但与“黑”名单,而不是上面如下:

喜朗

感谢您的演示。 也许我无法解释清楚,因为我实际上并不知道过程称为。 我们有1500产品的清单,我想创建一个“订单”的销售人员。 他们面临的问题是,他们不想上下滚动搜索这些产品,但键入从产品说明中间的一个字到细胞中。 他们希望看到类似自动筛选箱一箱(ALT + SHIFT下)与指定的字的项目清单。 的主要问题是所选择的字将是随机的,而不是首先作为第一个字,通常是品牌名称。

你的方法是不错,但会减慢订单处理,因为他们可能以及上下滚动。

再次非常感谢

你描述的一部分是明确的 - 你需要一个过滤器,只显示线,所需单词。

但是

你希望他们“ 从产品描述成一个单元的中间键入一个单词 ”,或做你想让他们从一个“ 类似自动筛选箱一箱用指定的字的项目列表 ”中选择一个单词?

对于任何一个,一系列VBA程序会做到这一点,然后过滤列表。 每当下拉的内容改变事件宏将被触发。

例如,这里有两个宏使用(你需要都使用它们)。 他们认为你的清单中有一个列标签A4开始; 你的下拉菜单将在A1,将是词的排序列表; 和你的工作表Sheet2中。 它应该在代码中进行更改,以反映你的真实的东西是显而易见的。

对于事件触发宏,右键单击工作表标签上。
从“查看代码”右键单击下拉菜单。
然后将代码粘贴到下面打开的窗口。

=======================================

私人小组Worksheet_Change(BYVAL目标作为范围)
如果没有相交(目标,[A1])是没有那么
FindWord
万一
结束小组
=======================================

而对于“真正的代码”:

要进入这个宏(子),<ALT-F11>打开Visual Basic编辑器。
确保您的项目在项目资源管理器窗口中高亮显示。
然后,从顶部的菜单中选择插入/模块和
将代码粘贴到下面打开的窗口。

当A1被改变的代码会自动运行,但您可以通过使用<ALT-F8>这将打开宏对话框触发它。 按名称选择宏,<RUN>。

===========================================
显式的选项
公共rDropDown由于范围
子FindWord()
昏暗RLIST为靶场,VLIST为Variant
昏暗colWords为集合
昏暗的剑()作为字符串
昏暗V作为变
昏暗我只要,J只要

Application.ScreenUpdating =假

'获取项目列表
随着工作表(“Sheet2的”),“< - 编辑工作表名称
设置rDropDown = .Range(“A1”)
设置RLIST = .Range(“A4”)< - 编辑在列表中列的顶部标签

“取消隐藏所有行,并关闭自动筛选
如果.AutoFilterMode然后.AutoFilterMode =假
.Columns(1).EntireRow.Hidden =假

“获取全系列
设置RLIST =范围(RLIST,列(1).Find(什么:=“*”,后:= [A1],看着:= xlFormulas,searchdirection:= xlPrevious))
结束与

“生成单词表
VLIST = RLIST
设置colWords =新集合
在错误恢复下一页
对于i = 2到UBound函数(VLIST,1)
V =拆分(VLIST(I,1),“”)
对于j = 0到UBound函数(V)的
colWords.Add项目:= CStr的(V(J)),键:= CStr的(V(J))
下面j
接下来,我
对错误转到0

使用ReDim剑(0至colWords.Count - 1)
对于i = 1到colWords.Count
剑(I - 1)= colWords(I)
接下来,我

Quick_Sort剑,LBOUND(SWORDS),UBound函数(SWORDS)

随着rDropDown.Validation
。删除
。新增类型:= xlValidateList,一级方程式:=加入(剑“,”)
结束与

rList.AutoFilter字段:= 1,标准1:=“*”&rDropDown&“*”

Application.ScreenUpdating = TRUE

结束小组

子Quick_Sort(为ByRef SortArray为Variant,BYVAL第一长,最后BYVAL长)
昏暗低至长,只要
昏暗的温度为Variant,LIST_SEPARATOR为Variant
低=第一
高=最后
LIST_SEPARATOR = SortArray((第一+最后一个)/ 2)

虽然做(SortArray(低)<LIST_SEPARATOR)
低=低+ 1
循环
虽然做(SortArray(高)> LIST_SEPARATOR)
高=高 - 1
循环
如果(低<=高),然后
温度= SortArray(低)
SortArray(低)= SortArray(高)
SortArray(高)=温度
低=低+ 1
高=高 - 1
万一
循环while(低<=高)
如果(第一个<高)然后Quick_Sort SortArray,一是高
如果(低<最后一个)然后Quick_Sort SortArray,低,最后
结束小组
========================================

你可以有一个点击过程中也 。 我假设你要显示出关键字一个更大的名单的基础上的列表。

比方说,你的大名单A2:A1000(第1行是标题)和用户给出D1关键字(比如暗D1)。

在这种情况下,把下面的公式中的任何列作为数组公式的第2行即不按输入公式后进入,但按Ctrl + Shift + Enter。 这将使{}周围,你可以在编辑栏中看到公式支架。 如果您再次编辑,你将不得不做CTRL + SHIFT +再次按Enter。 不要把{}手动。

这拖累该公式,直到1000行后(如果你的列表是A2:A1000)

= IFERROR(INDEX($ A $ 2:$ A $ 1000,SMALL(IF(ISNUMBER(SEARCH(“*”&$ D $ 1“*”,$ A $ 2:$ A $ 1000)),ROW($​​ A $ 2:$一个$ 1000)-ROW($​​ A $ 2)+1),ROW(1:1))),“”)

如果没有找到匹配,它不会显示任何内容。

如果在D1没有关键字,它就会显示完整列表。 如果你不想在任何关键字时显示完整列表,但空,则使用数组公式如下 -

= IF($ D $ 1 <>“”,IFERROR(INDEX($ A $ 2:$ A $ 1000,SMALL(IF(ISNUMBER(SEARCH(“*”&$ D $ 1“*”,$ A $ 2:$ A $ 1000个)),ROW($​​ A $ 2:$ A $ 1000)-ROW($​​ A $ 2)+1),ROW(1:1))),“”),“”)

嗨,

尝试这个

1.假设你的数据在范围内A1:A17。 标题是单元格A1。

2.复制单元格A1和粘贴单元格E1

3.在E2单元格中键入*深*

4.选择A1:A17,然后转到数据>高级

5.在列表区域中,选择A1:A17

6.在标准范围内,选择E1:E2

7.单击OK(确定)

这将显示2行数据。

如果你想上面的过程更加简化,那么所有上述步骤可以在点击按钮以及执行。 所以,请让我知道上述的进程是否是你想要什么,然后我会在其上运行以上所有步骤在点击按钮的宏观调控工作。

喜朗

你代码是别出心裁,做的伎​​俩。 然而,当我重新进入A1它警告早在数据验证是活动的,将只允许挑选从下拉列表中的单词的下一个单词。

除了上面:

A)是否有可能从A1删除“数据有效性”(创建空白单元格)

B)光标放置于B4

再次非常感谢

在A1,当我再次进入下一个单词

你是如何进入下一个单词? 这句话被设计成从下拉列表中。 您是否获得了错误,当您从下拉列表中输入一个字? 或者,你试图输入它们? 如果是后者,我们可以照顾到这一点,输入一个不存在的词时,仍然得到错误信息。 如果是前者,我需要更多的信息。

游标上休息B4”

添加一行代码到事件宏:

=====================================

私人小组Worksheet_Change(BYVAL目标作为范围)
如果没有相交(目标,[A1])是没有那么
FindWord
(B4)。选择 '< -增加了折线
万一
结束小组

=======================================

是否有可能从A1删除”数据有效性“(创建空白单元格)”

一个人需要为了容易产生下拉列表中的数据验证。 一个能做到这一点的用户表上,如果其他的解决方案是不恰当的,但你必须要在设计规格供用户的形式决定。

未选中时会格式化的字体是颜色作为背景(如白色)同样的一个简单的方法,使细胞显示为空白。 (当您选择单元格的下拉列表和箭头仍将显示,但是,我还以为你会希望看到你筛选上的字?

并以“清”的过滤器(即显示列表中的所有项目,只选择A1,然后<删除>,即使没有在细胞中显示。

我们可以增加选择输入单元时,将显示用户指令。

看看你的想法例程的验证和筛选部分的以下修改。 我也选择了删除旁边会出现“列表”标题中的下拉箭头。 这些变化/增加的BOLD'd

================================================

随着rDropDown.Validation
。删除
。新增类型:= xlValidateList,一级方程式:=加入(剑“,”)
.InputTitle =“用户手册”
.InputMessage =“从下拉列表中选择一个单词”&vbLf&“或点击<删除>看到整个列表”
结束与
rDropDown.Font.Color = rDropDown.Interior.Color

rList.AutoFilter字段:= 1,标准1:=“*”&rDropDown&“*”,visibledropdown:=假

======================================

分类:办公室 时间:2015-03-14 人气:0
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 2.620 (s). 10 q(s)