Vba Excel宏比较两个工作表中的两列并插入行值
我有点绝望了。我在一家能源公司工作,我试图将每天的能源消耗值插入到每季度的小时值中。我试着通过vlookup函数在没有VBA的情况下这样做,但它不起作用。然后我尝试了“复制/粘贴”这个非常原始的解决方案,但在不到两个月的时间里花了两个小时之后,我发现这是最愚蠢的事情 所以,问题是: 表1列出了我全年的每日消费量值,每行代表一天(a列为天,B列为月,C列为值),总行数为267行 表2有我的季度小时值,这意味着全年每天有4*24个值(a列是天,B列是月,C列是以小时和分钟表示的时间,D列是我要插入每日值的位置),行总数为35137 我想比较两张表中的日期值(即A列和B列),只要它们相同,就需要将其值从表1的C列复制到表2的D列Vba Excel宏比较两个工作表中的两列并插入行值,vba,excel,excel-2007,Vba,Excel,Excel 2007,我有点绝望了。我在一家能源公司工作,我试图将每天的能源消耗值插入到每季度的小时值中。我试着通过vlookup函数在没有VBA的情况下这样做,但它不起作用。然后我尝试了“复制/粘贴”这个非常原始的解决方案,但在不到两个月的时间里花了两个小时之后,我发现这是最愚蠢的事情 所以,问题是: 表1列出了我全年的每日消费量值,每行代表一天(a列为天,B列为月,C列为值),总行数为267行 表2有我的季度小时值,这意味着全年每天有4*24个值(a列是天,B列是月,C列是以小时和分钟表示的时间,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列中的值是否相同?哇!成功了!!!非常感谢大家!!!很高兴它成功了那么,一定要标记解决方案,这样其他人就会知道,如果他们面临类似的问题,它是有效的。。。。