刚刚开始接触vba,遇到了问题请大神帮我解答下,谢谢。
我在名为“耗材损耗情况”的工作簿里名为“报表”的工作表的C6单元格内录入以下公式【=INDIRECT(ADDRESS((SMALL(IF((('文具列表'!AQ:AQ="铅笔")+('文具列表'!AQ:AQ="钢笔"))*('文具列表'!BL:BL="损坏")*('文具列表'!CQ:CQ="未领用"),ROW('文具列表'!AQ:AQ),8^8),ROW(A1))),4,,,"文具列表"))】这个公式意思是,在“文具列表”工作表内找到第一个满足AQ列为“铅笔”或“钢笔”同时在BL列为“损坏”及CQ列为“未领用”的行号,通过该行号找及事先录入的列号“4”,将“文具列表”工作表内D列对饮的值返回到“报表”工作表的C6单元格。
由于数据量比较大,好几行录入该类型的公式后导致表格计算缓慢,可否通过vba做个宏并且制作成按钮点击后计算,这样可以避免大量的表格重复计算来加快计算时间。
我试过通过用“录制宏”后通过录制宏制作了按钮,但是按钮点击后,改公式就直接录入到单元格内了,我希望宏点击后,单元格内直接录入的是需要的值,而不是将公式填入该单元格来计算。
我在名为“耗材损耗情况”的工作簿里名为“报表”的工作表的C6单元格内录入以下公式【=INDIRECT(ADDRESS((SMALL(IF((('文具列表'!AQ:AQ="铅笔")+('文具列表'!AQ:AQ="钢笔"))*('文具列表'!BL:BL="损坏")*('文具列表'!CQ:CQ="未领用"),ROW('文具列表'!AQ:AQ),8^8),ROW(A1))),4,,,"文具列表"))】这个公式意思是,在“文具列表”工作表内找到第一个满足AQ列为“铅笔”或“钢笔”同时在BL列为“损坏”及CQ列为“未领用”的行号,通过该行号找及事先录入的列号“4”,将“文具列表”工作表内D列对饮的值返回到“报表”工作表的C6单元格。
由于数据量比较大,好几行录入该类型的公式后导致表格计算缓慢,可否通过vba做个宏并且制作成按钮点击后计算,这样可以避免大量的表格重复计算来加快计算时间。
我试过通过用“录制宏”后通过录制宏制作了按钮,但是按钮点击后,改公式就直接录入到单元格内了,我希望宏点击后,单元格内直接录入的是需要的值,而不是将公式填入该单元格来计算。