ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 名课 - Power BI数据分析与可视化实战 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
Python自动化办公应用大全 Excel 2021函数公式学习大典 Kutools for Office 套件发布 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: snje

[已解决] 提取汉字或拼音大写首字母最完美无误差方法

[复制链接]

TA的精华主题

TA的得分主题

发表于 2011-7-3 08:51 | 显示全部楼层
原帖由 jianbing 于 2011-7-3 06:31 发表

两个文件sheet1 是一样的,sheet2 是用自定义名称来做的,可能是版本不一样的原因吧,我的是英文原版2007企业版

无内嵌中文功能


jianbing大侠,我也知道是sheet2 是用自定义名称来做的,但名称管理器里并没有_Str啊?
没有定义名称.jpg

TA的精华主题

TA的得分主题

发表于 2011-7-3 10:34 | 显示全部楼层
12楼副件已更新,不知道为什么丢了一个函数。

TA的精华主题

TA的得分主题

发表于 2011-7-3 11:04 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
原帖由 jianbing 于 2011-7-3 10:34 发表
12楼副件已更新,不知道为什么丢了一个函数。


景仰中……

不知jianbing大侠能否讲解下迭代法的那个公式到底是怎么来的。谢谢!

TA的精华主题

TA的得分主题

发表于 2011-7-3 11:25 | 显示全部楼层

回复 23楼 hustnzj 的帖子

如果你会一点编程,那么迭代就很容易理解。就是 编程语言里的 for() 语句,循环计数同一个过程。 本例中就是把每一个字母拿出来判断,看看是不是大写字母,如果是,那把它记录下下。不是的就略过去。同时把大字字母与单元格内的原字串进行连接。
这些都比较容易理解。难点在于掌握Excel的心跳。 你要知道在这一秒钟里,Excel 在做什么。编程的时候我们很清楚,程序会按着顺序一条一条的执行,但Excel不会这样。Excel每心跳一次,可能会有几十个,几百个语句和计算被执行了。具体过程要靠长时间的摸索和体会。 英语国家的喜欢说 I hear you.  我“听见”你了。 看Avatar 中也有这样的描述。I hear you. 你要用心去听,去体会,去理解。这方面的资料太少。只能靠长时间的操作才行。

TA的精华主题

TA的得分主题

发表于 2011-7-3 12:35 | 显示全部楼层
原帖由 jianbing 于 2011-7-3 11:25 发表
如果你会一点编程,那么迭代就很容易理解。就是 编程语言里的 for() 语句,循环计数同一个过程。 本例中就是把每一个字母拿出来判断,看看是不是大写字母,如果是,那把它记录下下。不是的就略过去。同时把大字字母与 ...


Avatar都出来了,jianbing大侠简直就是“魅影武士”了!

我的理解是=IF(F1,IF(G1<H1,G1+1,G1),),F1从0变到1,单元格内容发生了变化,因此激活了Excel重新计算,这时会默认迭代计算100次,迭代计算会使G1+1这个不断执行,因此可以看到G1内数字的增长,但明显看到是迭代计算100次,然后再自动迭代计算100次,共200次,这是怎么来的呢?还望大侠赐教!

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-7-3 12:39 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
原帖由 hustnzj 于 2011-7-3 12:35 发表


Avatar都出来了,jianbing大侠简直就是“魅影武士”了!

我的理解是=IF(F1,IF(G1

好学 我只管看结果 都没想到中间有这么多步

TA的精华主题

TA的得分主题

发表于 2011-7-3 23:16 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
G1 是个计数器。给于Excel 心跳的频率。每增加一,Excel“心跳"一次。
后面的公式就是这时候完成一次迭代。举个例子,提取 Hello BeiJing
G1=1 时, mid("Hello Bei Jing",1,1) = "H"
G1=7 时, mid("Hello Bei Jing",7,1) = "B"
把这两个计算排序连接就成了 "HB"

究竟计数器的数要多大关系不大,只要大到能计算过所有的字符就行,如果单元内的字符有500个,那就设到500以上好了。

TA的精华主题

TA的得分主题

发表于 2011-7-4 08:30 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
原帖由 jianbing 于 2011-7-3 23:16 发表
G1 是个计数器。给于Excel 心跳的频率。每增加一,Excel“心跳"一次。
后面的公式就是这时候完成一次迭代。举个例子,提取 Hello BeiJing
G1=1 时, mid("Hello Bei Jing",1,1) = "H"
G1=7 时, mid("Hello Bei J ...


谢谢jianbing耐心解释,但我的意思是为什么Excel默认的迭代计算次数为100,它却进行了200次?

TA的精华主题

TA的得分主题

发表于 2011-7-4 12:40 | 显示全部楼层
原帖由 hustnzj 于 2011-7-4 08:30 发表


谢谢jianbing耐心解释,但我的意思是为什么Excel默认的迭代计算次数为100,它却进行了200次?

这个是因为使用了下拉列表形式来控制整个过程。我个人认为下拉列表触发了两次Excel运算。

你可以试一下不用下拉列表功能。把单元格F1 设置成0,再手工输入1。这样就不会计算200次了。

TA的精华主题

TA的得分主题

发表于 2011-7-4 14:32 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
原帖由 jianbing 于 2011-7-4 12:40 发表

这个是因为使用了下拉列表形式来控制整个过程。我个人认为下拉列表触发了两次Excel运算。

你可以试一下不用下拉列表功能。把单元格F1 设置成0,再手工输入1。这样就不会计算200次了。


果然如此,太厉害了,多谢jianbing!
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2025-12-24 17:14 , Processed in 0.027131 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表