Excel单元格输入逐字动态提示可选输入效果制作

Excel单元格输入逐字动态提示可选输入效果制作。INDEX函数整理动态列表,再配合IF函数干净界面,"数据验证"完成点选。


(笔记模板由python脚本于2024年06月27日 22:26:14创建,本篇笔记适合喜欢用Excel处理数据的coder翻阅)


【学习的细节是欢悦的历程】



**  自学并不是什么神秘的东西** ,一个人一辈子自学的时间总是比在学校学习的时间长,没有老师的时候总是比有老师的时候多。

------ 华罗庚




INDEX函数整理动态列表 动态提示可选输入 (IF函数干净界面,"数据验证"完成点选)



本文质量分:
97 97 97
本文地址: https://blog.csdn.net/m0_57158496/article/details/140026189

CSDN质量分查询入口:http://www.csdn.net/qc


目 录

  • ◆ 逐字动态提示可选输入
    • 0、准备数据源
    • 1、Excel"自动完成"工具
    • 2、公式模拟
    • 4、indirect函数小试"动态列表"
    • 5、"工程"概述
    • 6、iferror函数隐退#N/A字符
    • 7、OFFSET函数
    • 8、逐字提示效果

◆ 逐字动态提示可选输入

&ems;在Excel中实现单元格输入时的逐字动态提示可选输入效果,可以通过使用数据验证(Data Validation)功能结合下拉列表(Dropdown List)来实现。

下面是一个基本的步骤指南:

0、准备数据源

  • 首先,在一个单独的区域(例如,A1:A10)创建一个列表,列出所有可能的输入选项。

    在工作表A列准备了8行数据试炼

回页目录


1、Excel"自动完成"工具

  1. 应用数据验证
    • 选择你想要应用动态提示的单元格或单元格区域。
    • 转到"数据"选项卡,点击"数据验证"。
    • 在"设置"标签页中,选择"列表"作为"允许"的类型。
    • 在"来源"框中,引用你之前创建的选项列表的单元格区域(例如,=A1:A10)。
  2. 启用自动完成功能
    • 数据验证下拉列表默认不支持逐字动态提示。但你可以通过启用Excel的自动完成功能来模拟这种效果。
    • 在Excel的"文件"选项卡中,选择"选项"。
    • 在"高级"选项卡中,找到"编辑选项",并勾选"为单元格值启用自动完成"。
    • 点击"确定"。
  3. 使用自动完成功能
    • 现在你可以在应用了数据验证的单元格中开始输入。
    • 当你输入几个字符后,Excel应该会自动显示一个下拉列表,其中包含匹配你输入的字符的选项。
    • 你可以使用箭头键或鼠标从列表中选择一个选项。

请注意,这种方法依赖于Excel的自动完成功能,而不是真正的逐字动态提示。如果需要更高级的动态提示功能,可能需要使用VBA~(Visual Basic for Applications)~编程来实现。


回页目录


2、公式模拟

在Excel中,使用公式来模拟单元格输入时的逐字动态提示可选输入效果是可行的,但这种方法通常涉及到使用一些较为复杂的公式,如INDEXMATCH函数,以及辅助区域来跟踪用户的输入。

  • 这里是一个基本的思路
  1. 创建一个跟踪输入的辅助区域
    • 在一个单元格(例如,D1)中输入用户的输入。这个单元格将用于跟踪用户在目标单元格中的输入。
  2. 使用公式创建动态提示列表
    • 在另一个区域(例如,F1:F10),使用INDEXMATCH函数来创建一个基于D1单元格内容的动态列表。
    • 例如,如果您的数据源在A1:A10,公式可能类似于=IFERROR(INDEX($A$1:$A$10, MATCH("*"&D1&"*", $A$1:$A$10, 0)), "")。这个公式会返回与D1中的文本相匹配的任何项。
  3. 将动态提示列表设置为数据验证
    • 选择你想要应用动态提示的单元格或单元格区域。
    • 应用数据验证,选择"列表"作为"允许"的类型。
    • 在"来源"框中,引用你创建的动态列表区域(例如,=F1:F10)。
  4. 使用VBA或链接单元格来更新跟踪输入
    • 为了让D1单元格实时跟踪目标单元格的输入,你可能需要使用VBA宏或者链接单元格的方法。
    • VBA方法会更加灵活和高效,因为它可以实时响应单元格的变化。

这种方法的关键在于设置一个能够实时更新的辅助区域,以及一个能够根据这个辅助区域内容动态变化的数据验证列表。需要注意的是,这种方法可能不如使用专门的输入控件或第三方插件那样直观和高效。如果你对VBA编程比较熟悉,使用VBA来实现这个功能可能会更加直接和高效。

  • 链接单元格

      在Excel中,链接单元格是一种简单的方法,用于在不同工作表或工作簿之间共享数据。这种方法不需要VBA编程,但它的功能相对有限。下面是如何使用链接单元格来模拟单元格输入时的逐字动态提示可选输入效果:
    1、设置数据源
      首先,在一个工作表(例如,Sheet1)中设置你的数据源,比如在A1:A10区域列出所有可能的输入选项。
    2、创建跟踪输入的单元格
      在另一个工作表(例如,Sheet2)中,选择一个单元格(例如,B1)作为跟踪用户输入的单元格。这个单元格将显示用户在目标单元格中的输入。
    3、创建动态提示列表
      在Sheet2中的另一个区域(例如,D1:D10),使用公式来创建一个基于B1单元格内容的动态列表。
    使用IFSEARCH函数来检查B1中的文本是否包含在数据源中的每个项中。例如,

    excel 复制代码
    =IF(ISNUMBER(SEARCH(B1, Sheet1!A1:A10)), Sheet1!A1:A10, "")`

    4、设置数据验证
      选择你想要应用动态提示的单元格或单元格区域(例如,C1)。
      a、应用数据验证,选择"列表"作为"允许"的类型。
      b、在"来源"框中,引用你创建的动态列表区域(例如,=D1:D10)。
    5、链接单元格以跟踪输入
      在目标单元格(C1)中输入数据时,你需要手动将输入复制到B1单元格中,或者使用公式链接这两个单元格。例如,在B1中输入=C1,这样B1就会实时显示C1中的内容。
    6、使用动态提示列表
      当你在C1中开始输入时,B1中的内容会更新,从而动态更新D1:D10区域中的列表。
      你可以在C1中使用箭头键或鼠标从下拉列表中选择一个选项。

这种方法的关键在于设置一个能够实时更新的跟踪单元格(B1),以及一个能够根据这个单元格内容动态变化的数据验证列表。然而,这种方法需要用户手动将输入复制到跟踪单元格中,或者依赖于公式链接,这可能不如使用VBA那样自动化和高效。

  • SMALL函数

      您的理解是正确的。在这个特定的公式中,MATCH函数默认返回第一个匹配项的相对位置,这通常是行号最小的那个。而SMALL函数用于从一系列值中返回第k个最小值。在这个上下文中,SMALL函数的作用是逐个返回逻辑数组中非空的最小值,即逐个返回匹配项的行号。

      当公式向下拖动时,ROWS(C$2:C2)部分会逐渐增加,从而使得SMALL函数返回下一个最小值,即下一个匹配项的行号。这样,INDEX函数就能逐个返回所有匹配项。

      因此,在这个公式中,SMALL函数是必要的,它确保了公式能够逐行返回所有匹配项,而不仅仅是第一个。如果省略SMALL函数,公式将只返回第一个匹配项,而不是所有匹配项。

回页目录


4、indirect函数小试"动态列表"

理解了以上基本思路,就可以根据自己的喜好组合公式,达成目的。上文中的办法,我还不可以轻车熟路,第一种又"不够代码",我不喜欢。

根据我自己的理解和喜好,用了indexindirectmatch三个函数

  • if函数是起优化作用:
    1、如果匹配到列表最后一项,会出来全部相同的一条记录填满整个动态列表长度;
    2、当没有匹配或者匹配项占不满预设动态列表长度,满屏的#N/A错误字符。

      用了if函数,匹配到最后一项,后面就不用匹配;当公式返回错误字符#N/A时,直接置换成""空字符串。界石"干净"一点。😋😋

  • Excel365手机app截屏图片




    IF函数加持效果


回页目录


  • 四个复合公式

    excel 复制代码
    =INDEX(A2:A8,MATCH("*"&B2&"*",A2:A8, 0)) # 首行公式
    =MATCH(D2,A1:A8, 0) # 首行行号获取公式
    =IF(E2<8, INDEX(INDIRECT("a"&E2+1&":a8"),MATCH("*"&B2&"*",INDIRECT("a"&E2+1&":a8"), 0)), "") # 次行公式
    =IF(E2<8, MATCH(D3, A1:A8, 0), "") # 次行行号获取公式
  • 公式解析

    这四个Excel公式用于在不同的情境下查找和引用数据。下面是对每个公式的解析:

  1. =INDEX(A2:A8,MATCH("*"&B2&"*",A2:A8, 0))
    • 用途: 在A2:A8范围内查找包含B2单元格内容的单元格,并返回其值。
    • 解析 :
      • MATCH("*"&B2&"*",A2:A8, 0): 使用通配符(*)查找包含B2内容的单元格。"*"&B2&"*"表示查找任何包含B2内容的文本。MATCH函数返回的是查找内容在指定范围内的相对位置。
      • INDEX(A2:A8, ...): INDEX函数用于在指定的单元格区域中返回特定位置的值。这里的位置由MATCH函数的结果决定。
  2. =MATCH(D2,A1:A8, 0)
    • 用途: 在A1:A8范围内查找D2单元格内容的精确匹配,并返回其行号。
    • 解析 :
      • MATCH(D2,A1:A8, 0): MATCH函数在这里用于查找D2单元格内容在A1:A8范围内的精确匹配。第三个参数0表示进行精确匹配。
  3. =IF(E2<8, INDEX(INDIRECT("a"&E2+1&":a8"),MATCH("*"&B2&"*",INDIRECT("a"&E2+1&":a8"), 0)), "")
    • 用途: 如果E2的值小于8,则在INDIRECT函数定义的动态区域内查找包含B2内容的单元格,并返回其值。
    • 解析 :
      • INDIRECT("a"&E2+1&":a8"): INDIRECT函数用于将文本字符串转换为有效的Excel地址。这里,它创建一个从A列的E2+1行到A8的动态区域。
      • MATCH("*"&B2&"*",INDIRECT(...), 0): 类似于第一个公式,使用MATCH函数和通配符在动态区域内查找包含B2内容的单元格。
      • IF(E2<8, ..., ""): IF函数用于检查E2的值是否小于8。如果是,执行前面的INDEXMATCH组合;否则返回空字符串。
  4. =IF(E2<8, MATCH(D3, A1:A8, 0), "")
    • 用途: 如果E2的值小于8,则在A1:A8范围内查找D3单元格内容的精确匹配,并返回其行号;否则返回空字符串。
    • 解析 :
      • 与第二个公式的逻辑相同,只是这里加入了IF函数的条件判断。
        这些公式利用了Excel的查找和引用函数,结合条件判断,实现了灵活的数据查找和引用功能。

回页目录


5、"工程"概述

我就是在做根据输入"逐字提示候选输入"的"工程",我是在准备动态下拉列表。🤗🤗

  • 具体来说,这些公式可能用于:
  1. 数据匹配与检索 :
    您可能在处理一个包含相关信息的表格,并需要根据特定条件检索数据。例如,第一个公式用于在A列中查找包含B2单元格内容的单元格,这可能是在寻找与某个特定项目或关键词相关的数据。
  2. 动态数据范围 :
    通过使用INDIRECT函数,您的公式能够根据E2单元格的内容动态调整搜索范围。这意味着您的数据集可能是动态变化的,或者您希望根据某些条件(如E2的值)来限制搜索范围。
  3. 条件判断 :
    IF函数的使用表明您的任务涉及到基于某些条件(如E2的值是否小于8)来执行不同的操作。这可能意味着您只对满足特定条件的数据感兴趣,或者需要在不同的条件下应用不同的数据处理逻辑。
  4. 精确匹配与模糊匹配 :
    您的公式结合了精确匹配(第二个和第四个公式)和模糊匹配(第一个和第三个公式)。这表明您可能需要同时处理精确数据和部分匹配的数据。

总的来说,这些公式可能是用于在一个较大的数据集中根据特定条件搜索、匹配和检索数据,同时考虑到数据集可能的变化和特定的匹配要求。这样的任务在数据分析、数据整理和报告生成中非常常见。

我正在准备一个动态下拉列表的"工程",这通常用于提高数据输入的效率和准确性。

在这个场景中,这四个公式可能扮演以下角色

  1. 自动提示候选输入 :
    使用通配符的INDEXMATCH组合(第一个和第三个公式)可以用来根据用户已经输入的字符,自动显示匹配的选项列表。例如,当用户在B2单元格输入一个字符时,公式会检索A列中所有包含这个字符的单元格,作为下拉列表的候选选项。
  2. 精确匹配选项 :
    第二个和第四个公式则可能用于在用户选择了某个选项后,进行精确匹配以确认所选内容的正确性,或者用于在用户输入了一个完整选项时快速定位该选项。
  3. 动态调整选项范围 :
    通过INDIRECT函数,您的公式能够根据E2单元格的内容动态调整下拉列表的选项范围。这可能意味着您希望根据某些条件(如E2的值)来限制用户可选择的选项。
  4. 条件性显示选项 :
    IF函数的使用可能意味着您希望在某些条件下才显示下拉列表,或者根据条件显示不同的选项集。

总的来说,这些公式是实现动态下拉列表的关键,它们可以帮助用户快速准确地输入数据,同时确保数据的一致性和准确性。这对于数据管理和数据分析工作来说是非常有用的工具。


回页目录


6、iferror函数隐退#N/A字符

  • 手机截屏

  • 图中公式

    excel 复制代码
    =IFERROR(INDEX(A1:A8, MATCH("*"&B2&"*",A1:A8, 0)), "") # 首行匹配
    =IFERROR(IF(E2<8, INDEX(INDIRECT("a"&E2+1&":a8"), MATCH("*"&$B$2&"*",INDIRECT("a"&E2+1&":a8"), 0)), ""), "") # 次行匹配
    =IFERROR(MATCH(D2, $A$1:$A$8, 0), "") # 行号计算

    用了iferrorif函数,清除了有时侯满屏飞的错误字符 提示,让界面整不少。IFERROR函数隐退#N/A错误字符提示,点击蓝色文字跳转翻阅我的学习笔记


回页目录


7、OFFSET函数

由于indirect函数在低版本Excel中不支持块引用,前面的次行公式会返回错误提示字符串。为解决这一问题,特用支持低版本的offset函数复刻了前面的操作。

  • 手机Excel 365截屏图片

  • offset函数公式

    excel 复制代码
    =IFERROR(INDEX(A1:A8, MATCH("*"&$B$2&"*", A1:A8, 0)), "") # 首行公式
    =IFERROR(INDEX(OFFSET($A$1, E10, 0, 8-E10, 1), MATCH("*"&$B$2&"*", OFFSET(A1, E10, 0, 8-E10, 1), 0)), "") # 次行公式
    =IFERROR(MATCH(D12, $A$1:$A$8, 0), "") # 行号获取公式

回页目录


8、逐字提示效果

  • 截取非空列表长度公式

    excel 复制代码
    =OFFSET(D2, 0,0,MATCH("", D2:D8, 0)-1, 1)

indirectoffset函数匹配到的动态列表长度变幻无常难觅长度,导致下拉列表大片长短不一的空白区域。这个公式,弥补了这一缺憾

  • 截屏图片准备中......

回页首


上一篇:  在低版本Excel中创建次级下拉列表~(在低版本中indirect函数不支持选区,创建次级下拉列表得依靠"名称管理"给选区命名)~
下一篇:


我的HOT博:

本次共计收集 311 篇博文笔记信息,总阅读量43.82w。数据于2024年03月22日 00:50:22完成采集,用时6分2.71秒。阅读量不小于6.00k 的有 7 7 7篇。


推荐条件 阅读量突破6.00k (更多热博,请点击蓝色文字跳转翻阅)


  • 截屏图片

      (此文涉及ChatPT,曾被csdn多次下架,前几日又因新发笔记被误杀而落马。躺"未过审"还不如回收站,回收站还不如永久不见。😪值此年底清扫,果断移除。留此截图,以识"曾经"。2023-12-31)

回页首


精品文章:

来源:老齐教室


Python 入门指南【Python 3.6.3】


好文力荐:


CSDN实用技巧博文:


相关推荐
立秋67894 小时前
使用tkinter拖入excel文件并显示
开发语言·python·excel
信必诺4 小时前
Excel 宏录制与VBA编程 ——VBA编程技巧篇二 (合并内容相同连续单元格、取消合并单元格并在每个单元格中保留内容)
excel·vba
Zucker n4 小时前
学会python——在Excel中生成图表数据(python实例十五)
开发语言·python·excel
pictoexcel12 小时前
AI 助力的在线 Excel 表格:真正的革命还是市场噱头?
excel
python爱小白白15 小时前
7/3 第六周 数据库的高级查询
python·excel
木乐乐数据15 小时前
像学Excel 一样学 Pandas系列-创建数据分析维度
数据分析·excel·pandas
Zucker n16 小时前
学会python——在excel中写入数据(python实例十三)
开发语言·python·excel
我会一直20 小时前
Java实现百万级数据从Excel导入到数据库
java·数据库·excel
君的名字1 天前
【Excel操作】Python Pandas判断Excel单元格中数值是否为空
python·excel·pandas
m0_513717791 天前
Excel分组求和
excel