Excelmacros比较两张表中的两列并插入行值
我在这里有点绝望。 我在一家能源公司工作,我正试图将每日能源消耗值纳入季度小时值。 我试图通过vlookup函数没有VBA,但它没有工作。 然后我尝试了“复制/粘贴”这个非常原始的解决scheme,但花了2个多小时不到2个月,我发现这是最愚蠢的事情。
所以,这是问题:
工作表1的每日消费值为一年,每一行代表一天(A列为日,B为月,C为价值),总行数为267
表2有我的季度小时值,这意味着全年每天4 * 24的值(A列是白天,B是月份,C是小时和分钟的时间,D是我想插入每日值的位置),总数行数是35137
我想比较两个表(即列A和B)中的date值,只要它们相同,就需要将其值从表1中的C列中的值复制到表2中的D列中。
我希望我说得很清楚。 我会感到无法想象的任何帮助!
假设我正确地理解了你的问题,并且所有你想要的是在工作Sheet 2
Col D
每个单元格重复的值,其中date和月份与工作Sheet 2
中的date和月份相匹配,那么我可以想到最快的(很多解决scheme)完成此操作将依赖于您知道每日值仅在Sheet 1
存在一次的事实,因此您可以使用SumIfs()
函数,如下所示:
假设您的数据从第2行开始,并且第1行是标题,请在Sheet 2
单元格D2
中input以下公式:
=SUMIFS(Sheet1!C:C,Sheet1!A:A,A2,Sheet1!B:B,B2)
并拖下来整个Col D
实质上,你说的是:
给我所有的价值总和的Sheet 1
Col C
其中Col A
匹配我的A2
和Col B
匹配我的B2
。
现在,由于您在工作Sheet 1
只有一天/一个月的组合,所以这会给您提供这个价值。
希望这是有道理的,并伎俩!
好,不知道我是否正确地理解了你,但是如果我做了 –
date通过Excel存储为双精度值。 一个整数代表一天的开始(正好是午夜,所以在某一天的0:00:00)。 这段时间之后的所有内容都描述了一天中的小时。 例如,41,876.628将是2014年8月28日下午3:03。 将于2014年8月28日(即0:00:00点)的41,876.000开始。
如果要比较两个date的年/月/日相同,但忽略小时/分钟/秒,则只需将date舍入(!)为最接近的整数。
因此,在工作表2上,创build一个包含条目特定date的字段,例如2014年8月25日下午3:15(它需要是date格式,而不是string)。 现在,如果使用INT(…)函数,其中“…”是对包含date的单元格的引用,则会得到一个新的date – 与2014年8月25日的date完全一致,所以在0:00:00点。
如果您在工作表1上为您的date做同样的工作,那么您将获得可比较的date值,同样在此工作表中的每一天的开始。
现在,您应该可以轻松地将sheet2到sheet1的VLOOKUP添加到新创build的列(那些包含INT(… date …)函数的列),因为这些值现在可以轻松地进行比较。