Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba Excel宏比较两个工作表中的两列并插入行值_Vba_Excel_Excel 2007 - Fatal编程技术网

Vba Excel宏比较两个工作表中的两列并插入行值

Vba Excel宏比较两个工作表中的两列并插入行值,vba,excel,excel-2007,Vba,Excel,Excel 2007,我有点绝望了。我在一家能源公司工作,我试图将每天的能源消耗值插入到每季度的小时值中。我试着通过vlookup函数在没有VBA的情况下这样做,但它不起作用。然后我尝试了“复制/粘贴”这个非常原始的解决方案,但在不到两个月的时间里花了两个小时之后,我发现这是最愚蠢的事情 所以,问题是: 表1列出了我全年的每日消费量值,每行代表一天(a列为天,B列为月,C列为值),总行数为267行 表2有我的季度小时值,这意味着全年每天有4*24个值(a列是天,B列是月,C列是以小时和分钟表示的时间,D列是我要插入每

我有点绝望了。我在一家能源公司工作,我试图将每天的能源消耗值插入到每季度的小时值中。我试着通过vlookup函数在没有VBA的情况下这样做,但它不起作用。然后我尝试了“复制/粘贴”这个非常原始的解决方案,但在不到两个月的时间里花了两个小时之后,我发现这是最愚蠢的事情

所以,问题是:

表1列出了我全年的每日消费量值,每行代表一天(a列为天,B列为月,C列为值),总行数为267行

表2有我的季度小时值,这意味着全年每天有4*24个值(a列是天,B列是月,C列是以小时和分钟表示的时间,D列是我要插入每日值的位置),行总数为35137

我想比较两张表中的日期值(即A列和B列),只要它们相同,就需要将其值从表1的C列复制到表2的D列


我希望我说得够清楚了。对于任何帮助,我都会无比感激

假设我正确理解了您的问题,您所需要的只是对
表2
列D
中的每个单元格重复值,其中日期和月份与
表1
中的日期和月份匹配,这是最快的(许多解决方案中)我可以想到,要实现这一点,需要依赖这样一个事实,即您知道每日值在
表1
中只存在一次,因此您可以使用
SumIfs()
函数,如下所示:

假设您的数据从第2行开始,第1行是标题,在第2页的单元格
D2
中,输入以下公式:

=SUMIFS(Sheet1!C:C,Sheet1!A:A,A2,Sheet1!B:B,B2)
并将其向下拖动整个
cold

本质上,你是说:

给出
表1
列C
中所有值的总和,其中
列A
与我的
A2
匹配,
列B
与我的
B2
匹配

现在,由于在
表1
中只有一次日/月组合,因此这将为您提供该值


希望这是有道理的,并做到这一点

好吧,我不确定我是否理解正确,但如果我理解了-

Excel将日期存储为双值。整数表示一天的开始(正好是午夜,因此在给定的一天中为0:00:00)。 周期后的一切都描述了一天中的时间。 例如,41876.628将是2014年8月28日下午3:03。41876.000将是2014年8月28日一天的开始(0:00:00)

如果要比较两个日期是否具有相同的年/月/日,但忽略小时/分钟/秒,则只需将(!)日期四舍五入到最接近的整数

因此,在您的工作表2上,创建一个包含您输入的具体日期的字段,例如2014年8月25日下午3:15(需要采用日期格式,而不是字符串)。现在,如果您使用INT(…)函数,其中“…”是对包含日期的单元格的引用,您将得到一个新的日期,它正好对应于2014年8月25日的开始,因此是0:00:00

如果您对工作表1上的日期执行相同的操作,您将获得可比较的日期值,同样是该工作表上每天开始的日期值


现在,您应该能够轻松地从sheet2到sheet1对新创建的列(那些包含INT(…date…)函数的列)进行VLOOKUP,因为这些值现在可以轻松地进行比较。

只需理解一下,对于当天的所有值,sheet2的D列中的值是否相同?哇!成功了!!!非常感谢大家!!!很高兴它成功了那么,一定要标记解决方案,这样其他人就会知道,如果他们面临类似的问题,它是有效的。。。。