天道酬勤,学无止境

Excel:如何基于数据表创建动态数据验证列表(Excel: How to create dynamic data validation list based on data table)

问题

想象一下,我正在用Excel为我的孩子编写菜单计划器(比我的实际问题更容易描述)...

我有可用食物的清单:苹果,香蕉,胡萝卜,枣,鸡蛋,鱼等。

我有一个孩子清单:John,Karen,Lional,Mike等。

然后,我有一个简单的表格,列出了每个孩子喜欢的食物:在约翰的专栏下,苹果,香蕉和鱼对着一个“ x”,其他对着空白。

     J  K  L  M
---------------
a    x  x  x
b    x     x
c       x  x  x
d       x
e          x  x
f    x

现在,在我的菜单计划器的主要部分中,我希望有一些具有数据验证功能的单元格,这些单元格允许我使用上面的“喜欢”表为每个孩子选择食物:

Name  Food
A2    B2

单元格A2将包含数据验证,该数据验证将为所有孩子的名字(J,K,L,M)提供单元内下拉菜单(这很简单-我可以做到这一点!)

单元格B2需要包含所选孩子动态喜欢的食物的动态生成列表。 因此,如果我在A2中选择John,则B2列表将为{a,b,f}。 如果我选择Lionel,则B2列表将为{a,b,c,e}。 显然,随着孩子口味的变化,我可以通过添加/删除“ x”来更新“喜欢”表,B2中的下拉列表将自动更新。

如何为单元格B2创建下拉验证列表? (我宁愿不诉诸VBA来做到这一点)

回答1

我假设您的数据表在A1:E7范围内。

步骤1.为每个孩子创建选择列表

为每个孩子创建一个列表,列出所有偏好设置(在列表的末尾添加“-”作为占位符)。 在G2中输入此公式,然后拖动到G2:J7范围:

=IF(G1="-";"-";IF(ISNA(OFFSET($A$1;IFERROR(MATCH(G1;$A$2:$A$7;0);0)+
MATCH("x";OFFSET(B$2;IFERROR(MATCH(G1;$A$2:$A$7;0);0);0;7;1);0);0;1;1));
"-";OFFSET($A$1;IFERROR(MATCH(G1;$A$2:$A$7;0);0)+MATCH("x";OFFSET(B$2;
IFERROR(MATCH(G1;$A$2:$A$7;0);0);0;7;1);0);0;1;1)))

还要在数据列(G1:J1)上方放置孩子的名字。

步骤2.创建条件数据验证

鉴于您的第一个数据验证列表(名称)在单元格L2中,并且您已按照步骤1进行操作,请使用以下公式对食品进行数据验证:

=OFFSET(F$2;0;MATCH(L2;$G$1:$J$1;0);6-COUNTIF(OFFSET(F$2:F$7;0;
MATCH(L2;$G$1:$J$1;0));"-"))

此公式既排除了列表中的所有空白选项(“-”),又根据孩子的名字给出了正确的列表。


更新。 INDEX / MATCH的替代解决方案

OFFSET是一个易变的公式(即,只要您的工作簿中有任何更改,Excel都会重新计算它),因此您可能希望使用INDEX进行此操作。 这是我上面第1步的公式:

=IF(G1="-";"-";IFERROR(INDEX($A$2:$A$7;IFERROR(MATCH(G1;$A$2:$A$7;0);0)+
MATCH("x";INDEX(B$2:B$7;IFERROR(MATCH(G1;$A$2:$A$7;0)+1;1);1):B$7;0);1);"-"))

至于第二步,似乎当您选择的细胞,其公式为数据验证被重新计算只有这样OFFSET没有在数据验证列表中的波动。 由于INDEX无法返回范围,并且Excel不允许INDEX(..):INDEX(..)范围进行数据验证,因此OFFSET对于数据验证列表更好。

回答2

首先发布警报!!

这是我的方法http://www.mediafire.com/download/sqm41koonqjdz99/DynamicLists.xlsx

它基于三个步骤。

第1步:它使用一系列的5张表将x的食物/孩子喜欢的表刷新为更有用的东西,该列表列出了每个孩子的1、2、3等喜欢的对象,其后列出了#N / A(对于任何“未使用”之类的职位。 第五张表包含数据验证信息-它只是从该表中选择正确的列和正确的行数的问题。

步骤2:单元格D2和E2分别标识列和行数。

步骤3:将动态定义一个名为ValidFood的命名范围,并使用= OFFSET()函数从第五个表中选择正确的列和行。 这是一个聪明的地方-您可以在名称管理器中使用函数,而这就是在这里完成的工作。 单元格B2的数据验证规则仅引用此命名范围。 或者,可以使用“自定义”选项直接在数据验证规则中使用= OFFSET()公式

我已根据Lina的观点对解决方案进行了审查,发现它们并没有什么不同。 在这两种解决方案中,步骤1都实现了相同的目的(除了Lina使用“-”字符代替我的#N / A表示未使用的选择)。 然后两者都选择步骤1结果的相关位,并将其应用于数据验证规则。 它们之间的区别在于方法:一个公式冗长和嵌套(很紧凑,但需要努力理解)与更广泛地使用工作表来记录另一个过程中的详细步骤(不太紧凑,但需要更少的精力来理解) )。

回答3

您绝对可以在没有VBA的情况下执行此操作。 如果您尚未将开发人员标签添加到Excel,请立即进行操作。 http://msdn.microsoft.com/zh-CN/library/vstudio/bb608625.aspx

对于每个列表,您都需要创建一个命名范围。 因此,以“名称”为名,然后以每个人最喜欢的食物为名。 例如:AJ_Likes,RJ_Likes。

接下来,您将要插入一个组合框(Active X控件)。 右键单击该框,然后选择“属性”。 在“ ListFillRange”下,键入“名称”范围。 这将在第一个方框中填入您家人的名字。 然后,您要将列表链接到一个单元格,因此每个选择都将使用该值填充该单元格。 您可以将下拉列表直接放在链接的单元格上方,这样它就不会出现(出于美观目的)。

组合框的属性框中也有“ LinkedCell”。 然后,您要创建第二个组合框。 此框将具有一个=您将创建的新动态范围的填充范围。 动态范围将根据第一个框的选择而变化。

在动态范围内,使用如下条件公式:
= IF($ F $ 3 =“ aj”,INDEX(aj_likes,1),IF($ F $ 3 =“ rj”,INDEX(rj_likes,1),“”))

基本上说如果F3 = AJ,则从AJ_Likes范围中选择第一行,否则,如果它等于RJ,则从RJ_Likes范围中选择第一行。 在此处输入图片说明在此处输入图片说明

我似乎无法显示图像,所以这里有一些指向我创建的屏幕截图的链接。 希望对您有所帮助-非常乐意提供其他帮助。

http://hostmypicture.com/images/1ici.jpg

http://hostmypicture.com/images/2aga.jpg

抱歉-注意到您特别要求进行数据验证。 与上面相同的步骤,但是不必添加第二个组合框,而只需添加数据验证,LIST作为选项,然后选择动态列表作为您的范围即可。

http://hostmypicture.com/images/3olo.jpg

回答4

如果您准备好重新排列初始表,则可以更轻松地创建条件单元内下拉验证列表,如下所示:

您需要设置两个表,一个用于数据,另一个用于查找。

在单元格A1:D1中输入孩子的名字。

在每个选项下,按B1:D6输入每个单元格所需的食物。 您可以按照上面的示例将其留空,也可以将其全部抬高,以使某些孩子的名单更短。

然后为每个孩子的选择创建一个命名范围-例如JohnsChoices,仅包括他们的选择,而不包括他们的名字。

这些是单独的下拉列表。 使它们的大小都相同,以便以后添加。

然后创建一个高4行,宽2列的查找表:John | JohnsChoices Karl | KarlsChoices Lina | LinasChoices Mary | MarysChoices

然后将此4x2表命名为ChoiceLookup。

然后,为您要选择名称的单元格命名,例如“名称”。

在同一单元格中,仅针对名称创建一个下拉验证列表,即使用刚刚创建的表的左列。

最后,在“名称”单元格旁边,创建一个下拉验证列表,并在以下范围内:= INDIRECT(VLOOKUP(Name,ChoiceLookup,2,FALSE))

这将标识首先选择的名称,然后查找要用于数据验证下拉列表的选择列表。 INDIRECT照常将文本字符串解释为一个范围。

如果有足够的耐心,您最多可以嵌套其中的20个,但是从本质上讲,它们是层叠的选择,可以在您甚至未使用它们之前就更新后续的选择。 我经常使用它,它非常有用,可以避免与MATCH,INDEX,OFFSET等混淆

顺便说一句:几乎所有需要范围的对话框都可以用公式填充,只要它可以分解为范围,即INDIRECT。

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • Excel:下拉列表取决于其他下拉列表(Excel: Dropdown list dependant on other dropdown list)
    问题 我要在Excel中执行以下操作: 相邻单元格中的两个下拉列表: 下拉列表#1 | 下拉列表#1 Dropdown list 1: One Two Three 如果在第一个单元格中选择“一个”,则第二个单元格中的列表应包含以下选择: One: 1.1 1.2 1.3 如果在第一个单元格中选择“两个”,则第二个单元格中的列表应包含以下选择: Two: 2.1 2.2 2.3 等等。 周围有很多教程,但是我在弄清楚其中哪个教程可以解决这个确切问题方面有些麻烦。 更新:一个例子。 选择f.ex. 在“组”标题(“ col A”)下的“第1组”中,右侧“第1组”中列出的条目(“ col D”)应出现在“项目”标题(“ col B”)下。 其他组也一样。 回答1 按承诺更新: 使用列表进行验证时,必须输入如下所示的范围。 偏移功能允许根据其输入标准动态设置范围。 如果您考虑以下情况: =OFFSET(C1,0,0,1,1) 参数1 =锚点单元格参数2 =要移动的行数,您可以在此处使用减号来向上移动行,而可以使用正数向下移动参数3 =要移动的列数。 负数为左,正数为右。 参数4 =范围的高度(不能为负,是可选的,默认为1) 参数5 =范围的宽度(不能为负,是可选的,默认为1) 在这种情况下,返回的范围将为C1因为我们没有行或列的偏移量,并且高度和宽度设置为1 MATCH函数将返回一个索引
  • 在什么时候使用数据库值得?(At what point is it worth using a database?)
    问题 我有一个与数据库有关的问题,在什么时候值得探讨。 我主要是一名嵌入式工程师,但是我正在使用Qt编写一个与我们的控制器接口的应用程序。 我们处于一个奇怪的地方,那里有足够的数据,因此可以实施一个数据库(大约700多个项目并且不断增长)来管理所有内容,但是我不确定现在是否值得处理。 使用从excel生成并解析的文件来实现GUI时,我没有任何问题,但是即使使用VBA脚本,它也很繁琐且难以跟踪。 我一直在尝试使用Microsoft Access将数据转换为应用程序端更可管理的数据,并且似乎运行良好。 如果能解决问题,我距离使用SQL数据库和使用Qt库访问和修改它仅一步(或几步)。 我没有在此级别上管理数据的丰富经验,并且很好奇也许是解决此问题的最佳方法。 那么,在这种情况下使用数据库的真正好处是什么? 我意识到其中很多可能是特定于应用程序的,但是有关如何跨越嵌入式/应用程序编程线的一些一般性想法和建议将有所帮助。 这与将数据库放入嵌入式项目无关。 它也不是通常使用较大数据库的业务类型应用程序。 我正在为桌面上的单个用户设计一个GUI,以便与微控制器进行接口以进行监视和配置。 我决定使用SQLite。 您可以使用一些数据来做一些非常有趣的事情,这些数据在我第一次启动该项目时就没有考虑过。 回答1 在以下情况下,值得使用数据库: 您的应用程序演变为某种形式的数据驱动执行。
  • 将CSV文件导入SQL Server(Import CSV file into SQL Server)
    问题 我正在寻找使用BULK INSERT将.csv文件导入SQL Server的帮助,我有几个基本问​​题。 问题: CSV文件数据的中间(例如:描述)之间可能带有, (逗号),因此如何进行导入处理这些数据? 如果客户端从Excel创建CSV,则逗号分隔的数据将包含在"" (双引号)中(如下例所示),那么导入如何处理呢? 我们如何跟踪某些行是否有不良数据,哪些导入会跳过? (导入会跳过不可导入的行) 这是带有标题的示例CSV: Name,Class,Subject,ExamDate,Mark,Description Prabhat,4,Math,2/10/2013,25,Test data for prabhat. Murari,5,Science,2/11/2013,24,"Test data for his's test, where we can test 2nd ROW, Test." sanjay,4,Science,,25,Test Only. 和SQL语句导入: BULK INSERT SchoolsTemp FROM 'C:\CSVData\Schools.csv' WITH ( FIRSTROW = 2, FIELDTERMINATOR = ',', --CSV field delimiter ROWTERMINATOR = '\n', --Use to
  • python编程入门与案例详解-&quot;Python小屋”免费资源汇总(截至2018年11月28日)...
    原标题:"Python小屋”免费资源汇总(截至2018年11月28日) 为方便广大Python爱好者查阅和学习,特整理汇总微信公众号"Python小屋”开通29个月以来推送过的700多篇文章清单,如果需要本清单的电子版,可以在公众号后台发送消息"资源汇总”获取下载地址。 非计算机专业《Python程序设计基础》教学参考大纲 计算机相关专业"Python程序设计”教学大纲(参考) 《Python程序设计》实验指导书(30个实验) 《Python程序设计基础与应用》课后习题答案 系列PPT: 1900页Python系列PPT分享一:基础知识(106页) 1900页Python系列PPT分享二:Python序列(列表、元组、字典、集合)(154页) 1900页Python系列PPT分享三:选择与循环结构语法及案例(96页) 1900页Python系列PPT分享四:字符串与正则表达式(109页) 1900页Python系列PPT分享五:函数设计与应用(134页) 1900页Python系列PPT分享六:面向对象程序设计(86页) 1900页Python系列PPT分享七:文件操作(132页) 1900页Python系列PPT分享八:异常处理结构与程序调试、测试(70页) 报告PPT(163页):基于Python语言的课程群建设探讨与实践 报告PPT(123页):Python编程基础精要
  • Excel发现不可读的内容-数据验证(Excel found unreadable content - Data Validation)
    问题 打开工作簿时,我会填充一些组合框-数据源来自数据库。 我使用以下代码通过数据验证填充组合框:- With Selection.Validation .Delete .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:=list .IgnoreBlank = False .InCellDropdown = True .ShowInput = True .ShowError = True End With 其中list是我从数据库记录集中建立的逗号分隔的字符串。 这一切都很好。 稍后我重新打开工作簿时,就会出现问题。 我得到一个错误 “ Excel找到了不可读的内容。您要恢复此文件的内容吗” 您说是,然后Excel会给您 “ Excel能够通过删除功能来修复文件” 某些组合框中的数据验证不见了 我怀疑从某些互联网搜索中,我用于数据验证的字符串太长了? 对于我来说,将记录集值添加到隐藏工作表中并将数据验证源设置为隐藏工作表中的某个范围不是我的选择,因为组合框是动态的,并且会根据用户选择而变化和变化。 我真的只需要能够将数据验证设置为在用户交互中各个点建立的字符串。 如果是字符串太长的情况,是否可以追加到数据验证,还是可以使用另一种技巧来解决此问题? 回答1
  • 根据vlookup设置下拉值(set drop-down values based on vlookup)
    问题 我有一个带有2列Block和Address的工作表UserEntry 。 我想基于另一个具有相同列名的工作表Validation来验证这两个。 Validation表上的数据如下: Block | Address --------------- 001 | 101 001 | 101.3 001A | 35 020-1 | 203 020-1 | 203.5 020-1 | 204.1 ... 大约有11000个不同的块,以及大约40000个块/地址对。 我的目标是,如果用户在UserEntry表的“ Block列中输入一个值,则“ Address列中的下拉选项将更改为与该“ Block相对应。 我尝试通过以下公式使用自定义验证: =VLOOKUP(UserEntry!A2,Validation!A2:B40000) 但这算错了。 我在各种论坛中看到了一些解决方案,其中包括设置命名范围,然后让VLOOKUP()搜索适当的命名范围,但由于我必须创建11000个命名范围,因此在这里似乎行不通。 如何使Address的验证下拉列表包含与给定Block值相对应的所有值? 回答1 您没有提到VBA,但这是使用它的解决方案。 步骤1 创建一个块地址关系的主表。 确保在Block上Block进行排序。 我使用了Sheet1: 单元格E2很重要。 实际上,您不必在此放置任何内容
  • JeecgBoot 2.4.2 积木报表版本发布,基于SpringBoot的低代码平台
    项目介绍 JeecgBoot是一款基于代码生成器的低代码平台!前后端分离架构 SpringBoot2.x,SpringCloud,Ant Design&Vue,Mybatis-plus,Shiro,JWT 支持微服务。强大的代码生成器让前后端代码一键生成! JeecgBoot引领低代码开发模式(OnlineCoding-> 代码生成-> 手工MERGE), 帮助解决Java项目70%的重复工作,让开发更多关注业务。既能快速提高效率,节省成本,同时又不失灵活性! 当前版本:v2.4.2 | 2021-01-26 源码下载 https://github.com/zhangdaiscott/jeecg-boothttps://gitee.com/jeecg/jeecg-boot 技术文档 技术官网: http://www.jeecg.com在线演示: http://boot.jeecg.com技术文档: http://doc.jeecg.com常见问题: http://jeecg.com/doc/qa视频教程: http://jeecg.com/doc/videoQQ群:③816531124 升级日志 此版本为深度测试版本,历经一个月的集中测试,主要修复已知bug和强化功能,重点升级了代码生成器、集成了积木报表,提供在线报表设计工具。积木报表: http://jimureport.com
  • 如何遍历Excel文件并使用SSIS包将它们加载到数据库中?(How to loop through Excel files and load them into a database using SSIS package?)
    问题 我需要创建一个SSIS包,用于将多个Excel文件中的数据导入到SQL数据库中。 我计划使用嵌套的Foreach循环容器来实现此目的。 一个Foreach文件枚举器,并嵌套在其中,一个Foreach ADO.net架构行集枚举器 要考虑的问题:excel文件之间的工作表名称不同,但结构保持不变。 我已经创建了一个Excel Connection Manager,但是架构行集枚举器不接受Enumerator配置中的连接管理器。 经过研究,我发现您可以使用Jet Ole db提供程序连接到excel文件。 但是,我只能将Microsoft Access数据库文件指定为数据源。 尝试插入Excel文件作为数据源失败 经过更多研究,我发现您可以将Odbc数据提供程序与连接字符串一起使用,而不是DSN。 插入指定Excel文件的连接字符串后,此操作也失败 有人告诉我不要使用脚本任务来完成此任务,即使在尝试通过索引从表中提取数据的最后一次尝试之后,我仍然发现不同excel文件中表的索引是不同的 任何帮助将不胜感激 回答1 这是一种可能的方法,它基于以下假设:Excel文件中将没有任何空白表,并且所有表都遵循完全相同的结构。 此外,在假定文件扩展名为.xlsx 以下示例是使用SSIS 2008 R2和Excel 2007创建的。 此示例的工作文件夹为F:\Temp\ 在文件夹路径F
  • yycg项目第四天
    1 用户认证 1.1 什么是用户认证 总结: 对用户访问地址使用拦截器进行校验,如果是公开资源,放行,不是,从session中获取用户信息,如果能获取到,说明已经登录,放行,获取不到拦截,返回登录页面,登录提交后,从session中获取信息,判断验证码是否正确,及根据用户名密码判断是否登录成功。成功后,用户的访问会循环前面拦截器的过程 用户身份认证,是要解决这样的问题:用户告诉系统“我是谁”,系统就问用户凭什么证明你就是“谁”呢?对于采用用户名、密码验证的系统,那么就是出示密码。当用户名和密码匹配,则证明当前用户是谁;对于采用指纹等系统,则出示指纹;对于硬件Key等刷卡系统,则需要刷卡。 静态密码 用户名对应的密码设置在系统,以设置后一般不再改变,安全性低容易被木马窃取,可以定期修改密码,但不容易记忆。 动态密码 现在最常见的短信密码就是动态密码的一种方式。每次都生成一个动态密码,安全性较高。 验证码 验证码不是用户认证的方式,只是通常在用户登录时使用验证码方式。 是一种区分用户是计算机还是人的公共全自动程序。可以防止:恶意破解密码、刷票、论坛灌水,有效防止某个黑客对某一个特定注册用户用特定程序暴力破解方式进行不断的登陆尝试,实际上用验证码是现在很多网站通行的方式(比如招商银行的网上个人银行,百度社区),我们利用比较简易的方式实现了这个功能。 1.2 用户授权 给用户分配操作权限
  • 如何将Excel文件导入SQL Server? [关闭](How to import an Excel file into SQL Server? [closed])
    问题 关门了。 这个问题需要更加集中。 它当前不接受答案。 想要改善这个问题吗? 更新问题,使其仅通过编辑此帖子即可将重点放在一个问题上。 2年前关闭。 改善这个问题 我有一个Excel文件中的数据-实际上是xlsx格式,因为它现在是2020年。我的要求是将这些数据输入SQL Server,如下所示: 临时,用例用测试数据或少量数据(例如,少于3k行)的数据负载来填充表,并且以可重复,可靠且可能自动化的方式用于生产系统。 如果可能的话,那些发布答案应该考虑其提案的安全性和配置开销。 我恳请读者让这个看似模糊的问题继续公开,因为我希望为所有选项收集建议(希望提供示例链接),从而创建一个整理的列表。 回答1 有很多有关编写代码以导入excel文件的文章,但这是手动/快捷方式版本: 如果您不需要使用代码以编程方式导入Excel文件,则可以使用SQL Management Studio中的菜单非常快速地进行导入。 将Excel文件导入SQL的最快方法是使用导入向导: 打开SSMS (Sql Server Management Studio),然后连接到要将文件导入到的数据库。 导入数据:在SSMS中,在对象浏览器的“数据库”下,右键单击目标数据库,选择“任务”,“导入数据” 。 导入向导将弹出(您通常可以在第一个屏幕上单击“下一步”)。 下一个窗口是“选择数据源”,选择Excel : 在
  • java 导出 excel 最佳实践,java 大文件 excel 避免OOM(内存溢出) exce
    产品需求 产品经理需要导出一个页面的所有的信息到 EXCEL 文件。 需求分析 对于 excel 导出,是一个很常见的需求。 最常见的解决方案就是使用 poi 直接同步导出一个 excel 文件。 客户体验 & 服务性能 客户体验 如果导出的文件比较大,比如几十万条数据,同步导出页面就会卡主,用户无法进行其他操作。 服务性能 导出的时候,任务比较耗时就会阻塞主线程。 如果导出的服务是暴露给外部(前后端分离),这种大量的数据传输十分消耗性能。 解决方案 使用异常处理导出请求,后台 MQ 通知自己进行处理。 MQ 消费之后,多线程处理 excel 文件导出,生成文件后上传到 FTP 等文件服务器。 前端直接查询并且展现对应的任务执行列表,去 FTP 等文件服务器下载文件即可。 EXCEL 导出需要考虑的问题 OOM 正常的 poi 在处理比较大的 excel 的时候,会出现内存溢出。 网上的解决方案也比较多。 比如官方的 SXSSF (Since POI 3.8 beta3) 解决方式。 或者使用封装好的包 easypoi ExcelBatchExportServer hutool BigExcelWriter 原理都是强制使用 xssf 版本的Excel。 你也可以使用 easyexcel,当然这个注释文档有些欠缺,而且设计的比较复杂,不是很推荐。 我这里使用的是 hutool
  • 动态将文件名分配给excel连接字符串(Dynamically assign filename to excel connection string)
    问题 这是我第一次在SQL Server 2012中使用SSIS。我可以成功读取excel文件并将其内容加载到SQL Server 2012中的表中。该任务是一个简单的直接读取excel文件,然后无需验证即复制到sql server中或现在进行转换。 任务成功。 但是,当我尝试使程序包从变量而不是原始的硬编码中读取文件名时,它正在生成错误“ DTS_E_OLEDBERROR。发生了OLE DB错误。错误代码:0x80040E4D” 我所做的只是将excel连接管理器中的硬编码连接字符串替换为一个表达式,该表达式采用了由表达式分配的变量的值 在数据流任务开始之前,已为变量分配了值。 该变量已检查并且确实具有正确的值。 但是,以下错误是在数据流任务启动时生成的。 如果有人能指出我的不正确做法并建议我如何解决该问题,将不胜感激。 回答1 选项A Excel连接管理器的ConnectionString属性不是我要处理当前文件的地方,这与普通的平面文件连接管理器相反。 而是将表达式放在Excel Connection Manager的ExcelFilePath属性上。 从理论上讲,ConnectionString和ExcelFilePath之间应该没有什么区别,除了您将要构建更多的“东西”以使连接字符串恰到好处。 另外,请确保您以32位模式执行程序包。 选项B 您可能会遇到的另一种情况是
  • VBA Excel填充具有多个列的ListBox(VBA Excel Populate ListBox with multiple columns)
    问题 对于某些人来说,这可能是一个便宜的问题,但是我对如何填充列表框感到完全困惑。 使用此行,我可以填充列表框,如下所示: ListBox1.List = Sheets("Sheet1").Cells(1, 1).CurrentRegion.Value 或者 Dim rngName As Range Dim ws As Worksheet Dim i As Integer Set ws = Worksheets("Sheet1") For i = 1 To ws.Cells(ws.Rows.Count, 1).End(xlUp).Row Step 1 If ws.Cells(i, 1).Value <> vbNullString Then Me.ListBox1.AddItem ws.Cells(i, 1).Value Next i 以下是我计划用于填充列表框的数据,这些数据是渐进式的。 只有该列具有修复计数。 有人请启发我如何使用FOR LOOP填充适合多列和多行的列表框,如上面的代码所示。 任何帮助表示赞赏。 谢谢。 回答1 方法 遍历数组总是比范围更好-它要快得多。 像Siddharth Rout所建议的那样,用一个衬里创建一个变量数据字段数组而不是重新定义一个预先声明的数组并将其填充到一个额外的循环中,甚至更快(尽管这是一个好方法:-)注意
  • 在Excel中创建忽略#N / A或空白单元格的图表(Creating a chart in Excel that ignores #N/A or blank cells)
    问题 我正在尝试创建带有动态数据系列的图表。 图表中的每个系列都来自一个绝对范围,但是该范围中只有一定数量的数据,其余为#N/A 问题在于图表将所有#N/A单元格粘贴为值,而不是忽略它们。 我已经通过使用命名的动态范围(即“插入”>“名称”>“定义”)解决了这个问题,但是效率极低,因为每个图表都有4个动态系列,我必须制作25个这些图表。 是否有其他解决方案可让我正常指定数据系列的范围,但告诉图表忽略所有“#N / A”或空白单元格? 回答1 使用IF语句将不必要的值返回到“”时,我遇到了同样的问题,图表将按照您的描述进行操作。 但是,当我使用#N/A代替"" (重要的是,请注意,它没有像#N #N/A那样带有引号,而不是"#N/A" ),因此图表忽略了无效数据。 我什至尝试输入无效的FALSE语句,而且效果相同,唯一的区别是#NAME? 作为单元格中的错误而不是#N/A 。 我将使用虚构的IF语句向您展示我的意思: =IF(A1>A2,A3,"") ---> Returned "" into cell when statement is FALSE and plotted on chart (this is unwanted as you described) =IF(A1>A2,A3,"#N/A") ---> Returned #N/A as text when
  • vue-element-admin台前端解决方案: 基于 vue 和 element-ui实现
    介绍 vue-element-admin 是一个后台前端解决方案,它基于 vue 和 element-ui实现。它使用了最新的前端技术栈,内置了 i18 国际化解决方案,动态路由,权限验证,提炼了典型的业务模型,提供了丰富的功能组件,它可以帮助你快速搭建企业级中后台产品原型。相信不管你的需求是什么,本项目都能帮助到你。 建议 本项目的定位是后台集成方案,不太适合当基础模板来进行二次开发。因为本项目集成了很多你可能用不到的功能,会造成不少的代码冗余。如果你的项目不关注这方面的问题,也可以直接基于它进行二次开发。 集成方案: vue-element-admin基础模板: vue-admin-template桌面终端: electron-vue-adminTypescript 版: vue-typescript-admin-template (鸣谢: @Armour)Others: awesome-project #功能 - 登录 / 注销 - 权限验证 - 页面权限 - 指令权限 - 权限配置 - 二步登录 - 多环境发布 - dev sit stage prod - 全局功能 - 国际化多语言 - 多种动态换肤 - 动态侧边栏(支持多级路由嵌套) - 动态面包屑 - 快捷导航(标签页) - Svg Sprite 图标 - 本地/后端 mock 数据 - Screenfull全屏 -
  • 有不会的GIS、遥感、景观指数、R语言问题,记得从这里面搜一下
    公众号技术文章合集目录,目前已整理以下8个部分,共计109篇文章 GIS基础 GIS制图与空间分析 地理数据分享与处理方法 景观生态 R语言/Python地理数据综合处理 遥感与影像信息提取 河口海岸 各种软件工具和技巧总结 文章附带练习数据、资料、代码请分享转发本文至朋友圈并写推荐语: “给大家推荐一个宝藏公众号” 集赞15个后截图发到公众号后台联系管理员获取 点击蓝色标题即可跳转阅读对应文章 1 GIS基础 GIS基础教程之坐标系 地理坐标系与投影坐标系 坐标系的转换 如何选择坐标系 经纬度格式转换 GIS基础教程之常用数据类型 矢量和栅格区别 常见矢量、栅格数据类型 ArcGIS数据导入、导出 ArcGIS添加数据/打开工程文档 GIS基础教程之地理数据图形绘制 ArcGIS常用矢量数据格式 海岸剖面绘制 按基点移动图形 ArcGIS图形编辑命令 面的绘制(直线、圆弧、追踪、贝塞尔曲线) 捕捉工具 面的修改(合并、抽稀、炸开) 单一部件无法炸开的处理 GIS基础教程之GIS中的距离与实例 测地距离与平面距离 距离测量工具 点到线距离计算 按距离筛选 GIS基础教程之数据格式大全 推荐电脑查看,手机看版面太乱,我也很无奈 矢量、栅格、压缩的栅格 地理数据库 企业级数据库 LiDar、CAD nc/HDF/GRIB 工程文件 制图表达 三维 数据交换、其它
  • Python数据分析与机器学习项目实战
    时值蚂蚁上市之际,马云在上海滩发表演讲。马云的核心逻辑其实只有一个,在全球数字经济时代,有且只有一种金融优势,那就是基于消费者大数据的纯信用! 我们不妨称之为数据信用,它比抵押更靠谱,它比担保更保险,它比监管更高明,它是一种面向未来的财产权,它是数字货币背后核心的抵押资产,它决定了数字货币时代信用创造的方向、速度和规模。一句话,谁掌握了数据信用,谁就控制了数字货币的发行权! 数据信用判断依靠的就是金融风控模型。更准确的说谁能掌握机器学习和数据分析能力,谁就掌握了数字货币的发行权! 来自南京大学、厦门大学和南京工业大学的科研人员日前在新一期美国《科学进展》杂志上发表论文说,他们开发出一种“基因剪刀”工具的新型载体,可实现基因编辑可控,在癌症等重大疾病治疗方面具有广阔的应用前景。   被誉为“基因剪刀”的CRISPR基因编辑技术能精确定位并切断DNA(脱氧核糖核酸)上的基因位点,可以关闭某个基因或引入新的基因片段,从而达到治病目的。但脱靶效应一直是阻碍其应用的关键障碍之一。 机器学习和数据分析同样适用于生物医药行业,可以治疗疾病和延迟人类寿命。 欢迎各位同学学习Python数据分析与机器学习项目实战,链接地址为https://edu.csdn.net/combo/detail/1928 作者介绍 作者Toby:持牌照消费金融模型专家,和中科院,中科大教授保持长期项目合作;和同盾
  • 如何将事件与用户窗体上的选项按钮控件一起使用(How to use Events with Option Button Controls on Userform [duplicate])
    问题 这个问题已经在这里有了答案: 将代码分配给动态创建的按钮(2个答案) 3年前关闭。 我正在尝试从Excel工作表中的范围添加一个选项按钮。 For Each Value In OptionList Set opt = UserForm3.Controls.Add("Forms.OptionButton.1", "radioBtn" & i, True) opt.Caption = Value opt.Top = opt.Height * i opt.GroupName = "Options" UserForm3.Width = opt.Width UserForm3.Height = opt.Height * (i + 2) i = i + 1 Next 我想创建一个事件处理程序,以便在从用户运行代码时如果选择radiobtn1 。 尽管我有很多答案,但这些答案是针对工作表用户表单的。 我的意图是使用VBA用户表单。 请帮我与您的想法。 回答1 用户表单只有一种类型,但是[Excel]可用的两种控件存在[永恒]的困惑–不同在线资源使用的对比术语加剧了这种困惑。 (仅有关ActiveX控件的部分适用于用户表单。)也许我可以通过在一些可以帮助我理解的文字中加以说明。 ☺ 概述: 控件有两种类型:表单控件和ActiveX控件: 这两种类型的控件可以在工作表上使用
  • 通过java将Excel表格导入数据到数据库
    一、首先。我们使用到的是alibaba的开源框架《EasyExcel》 1、导入相应的依赖包 Maven <!-- https://mvnrepository.com/artifact/org.apache.poi/poi --> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>4.1.2</version> </dependency> Gradle // https://mvnrepository.com/artifact/cn.afterturn/easypoi-annotation compile group: 'cn.afterturn', name: 'easypoi-annotation', version: '4.2.0' // https://mvnrepository.com/artifact/cn.afterturn/easypoi-base compile group: 'cn.afterturn', name: 'easypoi-base', version: '4.2.0' // https://mvnrepository.com/artifact/cn.afterturn/easypoi-web compile group: 'cn
  • 将多个data.frame导出到多个Excel工作表的简便方法(Easy way to export multiple data.frame to multiple Excel worksheets)
    问题 我很惊讶地发现没有简单的方法可以将多个data.frame导出到Excel文件的多个工作表中? 我试过xlsx包,看来它只能写一张纸(覆盖旧纸); 我也尝试了WriteXLS软件包,但是它总是给我错误... 我的代码结构是这样的:根据设计,对于每次迭代,输出数据帧(tempTable)和sheetName(sn)都会更新并导出到一个选项卡中。 for (i in 2 : ncol(code)){ ... tempTable <- ... sn <- ... WriteXLS("tempTable", ExcelFileName = "C:/R_code/../file.xlsx", SheetNames = sn); } 我可以导出到多个cvs文件,但是必须有一种简单的方法可以在Excel中做到这一点,对吗? 回答1 您可以使用xlsx软件包写入多张纸。 您只需要为每个数据框使用不同的sheetName ,并需要添加append=TRUE : library(xlsx) write.xlsx(dataframe1, file="filename.xlsx", sheetName="sheet1", row.names=FALSE) write.xlsx(dataframe2, file="filename.xlsx", sheetName="sheet2", append