繁体   English   中英

Excel VBA查找方法

[英]Excel VBA Lookup Methods

我遇到了一个问题,我一直在挠头。 我已经研究了Index:Match查找方法和V/HLookup ,但是我不确定它们是否会有所帮助。 这是正在发生的事情:

我在有两个工作表。 其中有一个“客户ID”列(在客户一个月内进行多次“ x活动”的情况下,该字段具有并且将具有重复的ID),然后在另一列中包含该ID发生的日期。 第二张纸用于概述IE特定日期7-1-13的情况。

问题是我的原始数据表是按月初降序排序的,所以是7-1,7-2等,当我运行Vlookup ,如果客户ID在7-2和7上都有记录-15, VLookup将仅从7-2(第一)行中提取数据。 有没有人遇到过这种情况并找到了解决方法?

我目前的解决办法是让无论是对每一天的数据的新表,或而不是使用我的VLookup=Vlookup(A2, 'Data Sheet' A:D, 4, 0)给列行号,像=Vlookup(A2, 'Data Sheet' A$1:D$30, 4, 0) 这是每日报告,而且会很激烈。 如果可以的话请帮忙!

(另一旁注,我有一个用于视图的主工作表,一个数据表已全部收集,然后有30个工作表,一个月的每一天,这个情况是7月)。 对于每张工作表,我都将它们命名为每月的某天,因此我将这样反映数据:

Sheets(“ 7-1-13”)的数据来自其1日。 整个数据表中的数据从7-1-13到7-31-13。 我只需要在1号和1号数据中引用ID。

我想使用这样的东西,但是我很难

=Vlookup(A2, 'Data Sheet', A:D (ONLY IF THE CREATE DATE OF THIS ITEM IS 7-1), 4,0)`

但是当然不是那么容易:p

这可能不会以您喜欢的格式为您提供结果,但仍需要一些手动工作,但是如果不走宏路线,我想这会使您更进一步。 我想到了使用数组公式在特定日期之前获取所有ID。

例:

        A    B
       ID   Date
1      5    7/1/2013
2      2    7/2/2013
3      5    7/3/2013

在这种情况下,我假设您希望第一行中的5出现在7/1表上,2出现在7/2表单上,第三行中的5出现在7/3表中

在您的7/1表上。 您需要选择与原始数据匹配的空白行数(使用上面的示例,您将在7/1工作表上选择A1:A3)。 选定单元格后,在编辑栏中输入以下公式,然后按Ctrl + Shift + Enter 这就是使公式成为数组公式的原因。

=((Raw_DataSheet!B1:B3=DATE(2013,7,1))*1)*Raw_DataSheet!A1:A3

该公式的作用是查看B1:B3中的所有日期,并找到等于7/1/2013的日期。 由于您使用的是数组公式,因此可以得到数组{TRUE,FALSE,FALSE}。 乘以1,得到数组{1,0,0}。 现在,您有了一个数组,其B1:B3的每一行都等于1,等于7/1/2013。 然后,将该数组{1,0,0}乘以您的客户ID {5,2,5}

5 * 1  =  5
2 * 0  =  0
5 * 0  =  0

因此,现在您的整个公式等于数组{5,0,0}。 由于您在7/1工作表上选择了A1:A3,因此应显示的值应为

        A 
       ID 
1      5 
2      0 
3      0

在这里,您始终可以过滤掉0,而原始数据表中只列出了日期为7/1的所有ID。 然后,您还可以为每个工作表复制此代码,只需更改公式中的日期...是的,我知道,方法比您可能想要的要复杂得多,但这就是我想出的!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM