2016-02-19 41 views
5

创建变量数组,你可以从一系列创建一个变量数组,像这样:使用文本而不是价值

Dim x As Variant 

x = Range("A1:Z1").Value 

这显然放置.Value属性到数组。我试图做同样的事情,但获得单元格的.Text属性,但我不认为这是可能的。

Dim x As Variant 

x = Range("A1:Z1").Text '// <~~ type mismatch 

的原因如下,我有数据行,像这样:

|------A------|------B------|------C------| 
1| 01-Jan-2003 27-Feb-2005 15-Sep-2015 

我要输出的行到一个文本文件使用管道分隔符,目前我米使用此:

With WorksheetFunction 
    x = .Transpose(.Transpose(Cells(1, 1).Resize(1, 3).Value)) 
End With 

Print #1, Join(x, "|") 

其中一期工程,但它变得如此的输出看起来像它的格式为DD/MM/YYYY的.Value此:

01/01/2003|27/02/2005|15/09/2015 

问:我可以保留而不必解析/回路的阵列的第一中的每个值使用这种方法的格式化?

+2

使用** For **循环。 –

+0

我试图避免必须循环通过值,实际上它是一大堆相当大的文件,因此循环会对处理时间产生重大影响。我已经更新了我的问题,以反映这是因为它不是立即清楚tbf –

回答

2

不是非常优雅,我不确定这会大量工作,但它避免了一个循环。您可以将最终输出放入一个字符串并替换:

Dim x As Variant, y As String 

x = Range("A1:Z1") 

With WorksheetFunction 
    x = .Transpose(.Transpose(ActiveSheet.Cells(1, 1).Resize(1, 5).Value)) 
End With 

y = Join(x, "|") 

y = Replace(y, "/01/", "-Jan-") 
y = Replace(y, "/02/", "-Feb-") 
y = Replace(y, "/03/", "-Mar-") 
y = Replace(y, "/04/", "-Apr-") 
y = Replace(y, "/05/", "-May-") 
y = Replace(y, "/06/", "-Jun-") 
y = Replace(y, "/07/", "-Jul-") 
y = Replace(y, "/08/", "-Aug-") 
y = Replace(y, "/09/", "-Sep-") 
y = Replace(y, "/10/", "-Oct-") 
y = Replace(y, "/11/", "-Nov-") 
y = Replace(y, "/12/", "-Dec-") 

Debug.print y 
+1

我实际上最终不得不循环,因为有间歇的空白字符,需要整理'修剪$()',但这肯定是一个可以接受的解决方案,所以我会接受它 –

+1

甚至可以做一个迷你'对于我= 1到12'循环/替换,它仍然会比循环数组中的所有值更快 –

相关问题