1、打开源数据文件,把首行中的对应的数据,复制行到空白位置。
2、选中J2单元格,单击编辑栏中的"插入函数“,如图示。
3、d出”插入函数“对话框,设置其类别为”逻辑“,并选择列表框中的IF选项。然后确定。
4、在d出的”函数参数“对话框中,设置Logical_test参数为”I2=“”,将Value_if_true设置为“”,即空白内容。
将Value_if_false参数框中输入“VLOOKUP(I2,A2:B2846,2),然后确定。
5、选中J2单元格,注意是J2,不是I2哦.(I2是输入证券代码的地方),鼠标移动到单元格右下角,出现十字光标时,按住鼠标左键向右拖动到O2单元格。如图
6、这个时候会发现原来源数据中的C2-G2单元格中的内容就会自动填充到K2-O2单元格中。这个时候,如需要的数据是按源数据中的数据从上 到下排列的,就可以不用修改了。直接重复第5步中的方法,把J2-O2每个单元格下拉填充就完成了。如图示,先把需要的数据列复制到I列中,然后依次下拉 填充。
7、但有时候,需要的不是按照源数据中的排序,比如说,现用的这个例子,如果在I3中,输入000002就会出错。如图示。
8,这是j3中的函数为VLOOKUP(I3,A3:B2847,2)),也就是搜索从A3到B2487区域中 的内容。没有包含A2,所以我们输入000002在源数据中找不到。所以使用这个方法前,要先对需要的数据按源数据进行排序。不然,是不准确的。
使用MIN函数即可。MIN函数的用途是返回一组值中的最小值,其语法如下:MIN(number1, [number2], [number3], )
number1是必须填写的,也就是说,最少得有一个数字在内,从number2开始是可选填写的,最多可以填写255个“number”。
MIN的参数也可以是引用,例如=MIN(A1:A10)的意思就是返回A1到A10中的最小值。参数也可以是混合的,例如=MIN(A1:A10,94)的意思就是返回A1到A10还有94中最小的值(如果A1到A10中的数字都大于94,那就返回94,否则返回A1到A10中的最小值)。
你这个数据,这么多条件, 如果用公式写也不是不可以但是需要数组公式,会非常麻烦。数组公式运算量也会很大,所以会导致运算非常缓慢。建议用VBA来解决,可以实现你的问题,VBA运算也比较快,统计更准确。
当然,写VBA代码需要你的原表样表。如果让我写不免费。有必要的话可私信。 以下可以说一下思路。
如果用公式,要计算每一列的数据是否符合条件,如果符合所有组合条件,则返回行号,如果不符合所有条件,则返回工作表最大行号。然后用small或者large+row函数将对应符合条件的行号根据序列提取出来,然后再用index或者indirect函数返回相应的数据。由于你要查询的数据量比较大,每个单元格都要把数组中的数据运算一遍,再提取相应的数据,所以运算量非常大。可能会卡的受不了。
用VBA的思路,核对每一行数据,如果符合条件的,写入数组或者字典,然后将数组或者字典中的数据输出即可。所以每一行的数据只用提取一遍,而且内存运算, 速度非常快。 当然,如果不习惯这个, 也可以用复制粘贴的方法, 符合条件的直接粘贴过来也行。这样数据量大的话,可能会慢一些,但是可以带格式,代码相对好写一些,比较直观。
不管用哪种方式,做现在你这个要求的工作,都是代码比较合适。
如果还有问题,欢迎继续追问或者私信。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)