ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: john13579

[分享] 平衡化学方程式、离子方程式、和分子量的程式

[复制链接]

TA的精华主题

TA的得分主题

发表于 2017-3-28 16:11 | 显示全部楼层
john13579 发表于 2017-3-28 15:58
三小时前我试了一下你上次上传的平衡方程的程式,发觉它连最基本的 A+B=C+D都做错了。暗叫一声侥倖,幸好 ...

我上次是看过vb6后,转变为vba的,论坛以前没人做。所以,我觉得可能是个机会,但是我是钻研ppt的,真的不懂excel,钻研到现在,好像ppt没什么研究的了,也大致写了上千篇文章,我以前在锐普论坛的,写了一些基础文章。
后来感觉自己在做图像、声音方面的一些缺陷,所以借用论坛excel人才济济的优势,发起这个研究,感谢大侠坚持不懈的钻研精神和精湛的技术,辛苦了,大侠。

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-3-29 00:08 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
dongdonggege 发表于 2017-3-28 16:11
我上次是看过vb6后,转变为vba的,论坛以前没人做。所以,我觉得可能是个机会,但是我是钻研ppt的,真的 ...

你说你发表了上千篇文章,那真是惊人!单是那分执着,已令我感动。//我也相信,限于规格,ppt的变化有限,所以我稍一接触便不再深究。以前在工作时,有需要用VBA写程式解决工作问题,所以我才深入研究。//我的另一项特长是英语,我曾在网上用电邮教英语,学生遍及全世界。有少数人学得很好,大部份都达不到他们理想的结果。一部份人成了现在的好朋友。最好朋友之一的说,她最欣赏的是我处事锲而不舍的毅力。所以说,就毅力讲,你我都是超人的!//声音和图像不是VB或VBA的长项,要处理它们,用专门的軟件較好。

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-3-29 14:16 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2017-4-18 10:09 | 显示全部楼层
john13579 发表于 2017-3-28 12:27
这是我写的一个最充满细节的程式,每个细节都带来新的挑战。程式本身可能用处不大,但解决那些问题的方法, ...

大侠,你好,今天我测试了程序,你的程序中化学方程式前面的系数出现了“1”,感觉与我们的习惯还不是匹配,如果系数是“1”,能否就忽略啊。谢谢。

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-4-18 11:58 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 john13579 于 2017-4-18 21:00 编辑
dongdonggege 发表于 2017-4-18 10:09
大侠,你好,今天我测试了程序,你的程序中化学方程式前面的系数出现了“1”,感觉与我们的习惯还不是匹 ...

我也有想过这问题,加上「1」表示是经过计算的结果。

TA的精华主题

TA的得分主题

发表于 2017-6-10 09:52 | 显示全部楼层
本帖最后由 leikaiyi123 于 2017-6-10 12:46 编辑
john13579 发表于 2017-4-18 11:58
我也有想过这问题,加上「1」表示是经过计算的结果。
下面两处对原代码中0改为1,解决系数为1的情况:
    ans = ""
    For i = 1 To cnt
        If coef1(i) > 1 Then '0改1
            ans = ans & coef1(i) & form1(i) & "+"
        Else
            ans = ans & form1(i) & "+"
        End If
    Next
    ans = Left(ans, Len(ans) - 1) & "="
    For i = 1 To cnt2
        If coef2(i) > 1 Then '0改1
            ans = ans & coef2(i) & form2(i) & "+"
        Else
            ans = ans & form2(i) & "+"
        End If
    Next
    ans = Left(ans, Len(ans) - 1)

TA的精华主题

TA的得分主题

发表于 2017-6-10 09:52 | 显示全部楼层
dongdonggege 发表于 2017-4-18 10:09
大侠,你好,今天我测试了程序,你的程序中化学方程式前面的系数出现了“1”,感觉与我们的习惯还不是匹 ...

    ans = ""
    For i = 1 To cnt
        If coef1(i) > 1 Then '0改1
            ans = ans & coef1(i) & form1(i) & "+"
        Else
            ans = ans & form1(i) & "+"
        End If
    Next
    ans = Left(ans, Len(ans) - 1) & "="
    For i = 1 To cnt2
        If coef2(i) > 1 Then '0改1
            ans = ans & coef2(i) & form2(i) & "+"
        Else
            ans = ans & form2(i) & "+"
        End If
    Next
    ans = Left(ans, Len(ans) - 1)

TA的精华主题

TA的得分主题

发表于 2017-6-10 10:28 | 显示全部楼层
1、此程序的优点:可处理普通方程式、结晶水合物反应的方程式、离子方程式
2、测试KClO3=KCl+O2,配平有BUG:1KClO3=1KCl+1.5O2       
3、从程序看貌视系数大于20的反应,可能无法配平,没测试
4、If coef1(i) > 1 Then '0改1    If coef2(i) > 1 Then '0改1   改后配的系数就没有1了
5、 pos = InStr(a1, ".") Or InStr(a1, "·") '结晶水·改.    这样改后,可识别带.(小数点)的结晶水合物,因为某些人会用.代替·
6、建议增加能忽略带“↑↓”、“(浓)”、“(稀)”、“(g)"、"(l)"、"(g)”等符号的化学方程式,其中括号可能为半角或全角。

TA的精华主题

TA的得分主题

发表于 2017-6-10 10:29 | 显示全部楼层
leikaiyi123 发表于 2017-6-10 09:52
ans = ""
    For i = 1 To cnt
        If coef1(i) > 1 Then '0改1

大侠,你好,你弄个半截程序,我不知道你说的是什么意思?能否传个附件,或搞个完整的程序?

TA的精华主题

TA的得分主题

发表于 2017-6-10 12:47 | 显示全部楼层
dongdonggege 发表于 2017-6-10 10:29
大侠,你好,你弄个半截程序,我不知道你说的是什么意思?能否传个附件,或搞个完整的程序?

你的原代码中这样改后,系数为1就不显示了
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-25 03:36 , Processed in 0.037335 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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