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匹配我的A2Col 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 …)函数的列),因为这些值现在可以轻松地进行比较。