这不是答案。这是试图理解你的问题背后,我怀疑是一个有趣的问题。你应该从你的问题中正确地猜出你的问题,并替换错误的猜测。
您无法将数据保存在数组中,因此您必须描述问题的中间部分。我想你有一张包含格式化数据的工作表,并且不时收到一份要合并到工作表中的新数据的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问题,但我认为您首先会遇到设计问题。
祝你好运。
您能否向我们展示您的输入数据的快照或链接以及一些样本数据的预期结果?从上述内容可以看出,您希望将不在数组1中的数组2添加到数组1中,反之亦然。正确? – bonCodigo