2012-11-30 50 views
0

好的我已经做了很多关于这个主题的研究,但我还没有找到答案,所以在这里: 我有数据,我在接收这是不受欢迎的顺序(只是带有标题的列,例如日期,时间等,以及这些标题下的数据),我的目标是对已经手动排序的模板(在另一个工作表中)排序不需要的数据。我现在的想法是使用像这样指定两个数组:在Excel中查找另一个数组中的数组的非特定值Vba

SetRng1 = Application.InputBox("Select The Formatted Range of Channel Names", Type:=8) 

SetRng2 = Application.InputBox("Select The Unformatted Range of Channel Names", Type:=8) 

使用RNG1元素RNG2元素进行排序。但是,Rng1中的通道并不总是处于Rng2中,在这种情况下,格式化数据(Rng1)中的通道需要按照正确的顺序插入,其下面有空白单元格。与Rng2中的情况一样,将出现不在Rng1中的通道,这些通道将需要推到通道列表的末尾。此外,Rng1和Rng2中标题的名称和数量将一直在变化,因此无法仅通过其通道名称找到并排序元素。我很惭愧地承认,我对vba的认识并没有达到这个任务的标准。我很感激任何可能提供的帮助,请让我知道是否有任何不清楚的地方。

+0

您能否向我们展示您的输入数据的快照或链接以及一些样本数据的预期结果?从上述内容可以看出,您希望将不在数组1中的数组2添加到数组1中,反之亦然。正确? – bonCodigo

回答

0

这不是答案。这是试图理解你的问题背后,我怀疑是一个有趣的问题。你应该从你的问题中正确地猜出你的问题,并替换错误的猜测。

您无法将数据保存在数组中,因此您必须描述问题的中间部分。我想你有一张包含格式化数据的工作表,并且不时收到一份要合并到工作表中的新数据的CSV文件。

为了使描述更加容易,我会用它来代表你的格式化数据:

Name Week Mon Tue Wed Thu Fri 
John  1 5 10 12 4  3 
Gwen  1 3 15 3 1  8 
John  2 3 7 18 6  4 
Gwen  2 9 20 4 1  7 

你说的格式名称可以更改或添加到。也许老板决定星期一,星期二等是非常不正式的,并希望星期的名字能够明确。也许你会在星期六和星期天添加一些关于周日是第一天还是最后一天的争论。

您说CSV文件中的列标题并不总是与格式化的列标题相匹配。当格式化的CSV标题不是时,CSV标题可能会缩写。也许CSV标题是用西班牙文。也许在高峰时段有公众持有,所以约翰和格温在周二至周六工作。也许星期五是新员工的安息日,所以他们在周日到周四工作。

您正在考虑使用InputBox来让用户选择两个标题序列,但我看不出如何工作。

首先,您可以查看工作表以查找所需的序列。用户不必选择任何东西。其次,为用户选择CSV文件的名称集和序列意味着宏必须包含所有可能的名称集和序列的列表。那可能吗?既然你声明CSV文件可能包含一个新的标题,我估计不会。

假设,两套标题是:

Worksheet: Name Week Mon Tue Wed Thu Fri 
CSV file: Staff WoY Sun Mon Teu Wed Sat 

有作为名称,周列不同的名称。星期二有错误的复杂情况有不同的平日。

您是否准备好与CSV文件匹配的列表?你会试图解决飞行中的差异吗?我认为一套完整的预备清单是不可能的。第二个将需要一些聪明和复杂的代码来获得有限的好处。我会(1)简化要求,(2)有一个备用名称的准备表格。

为了简化,我会要求格式化数据提前包括每个可能的列。如果一个CSV文件包含以前未知的星期六,我会要求在CSV文件应用之前添加它。如果不在列表中,我不会尝试添加“Teu”。

我的选择表将是一个隐藏的工作表是这样的,每一个行定义为同一列的替代名称的列表:

Name Staff  Staff member 
Week WoY  Week of year 
Mon Monday  M 
Tue Tuesday Tu   Teu 
Wed Wednesday W 
Thu Thursday Th 
Fri Friday  F 
Sat Saturday Sa   St 
Sun Sunday  Su   Sn 

这个表无法处理歧义。鉴于M T W T F,它不能推断第一个T是星期二和第二个星期四。

如果您愿意,可以包含拼写错误(如Teu)。

我会要求来自工作表和CSV文件的每个列标题都在此表中。任何无法识别的列标题都会产生一条有用的消息,以便用户在重新运行宏之前可以修复工作表,替代表或CSV文件。

应该清楚的是,虽然您可能有VBA问题,但我认为您首先会遇到设计问题。

祝你好运。

相关问题