虽然过年,可是这两天也没闲着,初一《云鹏个人理财账簿》发布后,接着又在开发《云鹏个人理财账簿加强版》。加强版因为技术原因,主要是科目的列表,所以直到今天早上才开发完成。这里不妨透露下科目列表的解决办法。
加强版与之前版本相比,主要是增加了对资产、负债的管理,由于资产、负债需要统计期初余额、期末余额,格式有所变化,所以不能跟之前的收支科目定义在一处,而理财账簿又是基于Excel 2003开发的,科目的列表使用了数据有效性中的序列,序列在定义时虽支持公式,却要求数值只能来源于同一列,这样散列在两个区域的科目就不能直接处理到序列中了。后来经过反复试验,我增加了一个“字典项”工作表,将科目分类读取到A、B两列,公式如下:
{=IF(A1="","",IF(ISERROR(MATCH("收入",INDIRECT("日常生活!H"&(MATCH(A1,日常生活!G:G,0)+1)&":H65536"),0)),IF(ISERROR(MATCH(A1,日常生活!M:M,0)),日常生活!$M$3,IF(INDIRECT("日常生活!M"&(MATCH(A1,日常生活!M:M,0)+1))=0,"",INDIRECT("日常生活!M"&(MATCH(A1,日常生活!M:M,0)+1)))),INDEX(日常生活!G:G,MATCH("收入",INDIRECT("日常生活!H"&(MATCH(A1,日常生活!G:G,0)+1)&":H65536"),0)+MATCH(A1,日常生活!G:G,0),1,1)))}
这是A2单元格使用的数组公式,其他单元格的公式与此类似,这样就可以保证我需要的科目被顺序读取到“字典项”的A、B两列中了。
读取到数据后,对A、B两列分别定义名称,使用“插入”->“名称”->“定义”,公式为:
=OFFSET(字典表!$A$1,,,(65536-COUNTBLANK(字典表!$A:$A)),)
这个是A列的公式,然后在科目定义序列时,引用该名称,从科目的列表中就可以看到需要的科目了。
由于连续开发《云鹏个人理财账簿》和《云鹏个人理财账簿加强版》,而且《云鹏个人理财账簿加强版》的说明文档至今没写完,完成还需要些时间,所以《云鹏个人理财工具》的发布进度恐怕要延后了。
不过经过一个春节的努力,云鹏系列个人理财工具的体系已经建立,而且个人理财账簿和加强版使用的技术也会积累到后续的理财工具中。
另外,经过一段时间试用,感觉比较好用的电子表格工具还是微软的Excel,像WPS Office,虽然很希望支持国货,可是实在是问题多多,逻辑稍微复杂点,就报系统错误,甚至崩溃,根本没法进行下去;还有那个RedOffice,定义列表时居然不能用公式,我晕啊!
反正不管怎么说,这套工具会继续做的,希望大家共同理财,共同进步!