2015-06-30 166 views
0

我需要如何从数组写入Excel单元格。从数组写入单元格Excel vba

我有数组中的三个值,我想将它写在细胞中,它看起来就像是:

 
EUR 
GBP 
USD 

,但我不知道怎么办。我希望你能帮助我。 代码:

On Error Resume Next 
For Each element In CurrencyArray 
    myCollection.Add Item:=element, Key:=element 
Next element 
On Error GoTo 0 

ReDim CurrencyArray(1 To myCollection.Count) 
For element = 1 To myCollection.Count 
    CurrencyArray(element) = myCollection(element) 
Next element 


Set Summary = Range("M1") 
Summary.Value = "Sum Currency" 

在这一点上,我想的值写入单元格。

ReDim CurrencyArray(0 To myCollection.Count, 1 To 1) 
For element = 1 To myCollection.Count 
CurrencyArray(element, 1) = myCollection(element) 
Next element 


CurrencyArray(0, 1) = "Sum Currency" 

Set Summary = Range("M1").Resize(UBound(CurrencyArray, 1) + 1) 
'Sum currency values 
Dim Count As Integer 
Dim SumArray As Variant 

For Each element In CurrencyArray 
For Count = 2 To lRow 
    If ws.Cells(Count, 5) = element Then 
     SumArray = SumArray + ws.Cells(Count, 6) 
    End If 
Next Count 
Next element 


Summary.Value = CurrencyArray 

这是不工作...我希望你能帮助我解决问题 应该看起来像:提前

EUR 1000 
GBP 500 
YEN 100 

感谢

的问题是,我具有不同值的电子表格,但我不允许编辑除VBA以外的电子表格。 货币金额
EUR 1000
100欧元
EUR 12
EUR 70
GBP 40
GBP 20

我不得不筛选不同currencys和总结currencys的量。然后我想将它设置到Excel表格的正确位置。

EUR 1182
GBP 60

但我不事先许多货币将如何不见有多大的量是知道的。起初,我喜欢过滤出版物,然后根据货币总结金额。

问候

马蒂亚斯

+0

至于你的其他问题,您没有提供足够的信息来重现你的问题,甚至可以知道它是什么。请阅读[如何创建最小,完整和可验证的示例](http://stackoverflow.com/help/mcve)。您还应该看看Chip Pearson的网站,以便您了解从阵列到范围的写入。 –

+0

为了解决你的总问题,我会建议,正如我在下面所做的,一个数据透视表。只需在同一张工作表上创建一个表格;使用宏记录器;然后清理它。它会给你货币清单,以及每个货币的总和。列表更改时,只需刷新它。您可能需要进行编辑,以便在展开列表时更新Pivot的范围。 –

回答

0

要垂直写,你需要有一个二维数组,并适当大小的目标。所以 (完全未经测试):

ReDim CurrencyArray(0 To myCollection.Count, 1 to 1) 
For element = 1 To myCollection.Count 
    CurrencyArray(element, 1) = myCollection(element) 
Next element 

'You can put the header in the first cell of an array where the first dimension is zero-based 
CurrencyArray(0,1) = "Sum Currency" 

Set Summary = Range("M1").Resize(ubound(currencyarray,1)+1) 
Summary.Value = CurrencyArray 

另一种选择,将转置的单一尺寸的阵列。但是你可以转置多大的数组是有限制的;并且按照上面的方法进行操作,那么当您必须单独从集合中将元素写入数组时,请保存该步骤。

+0

哈哈我发布了转置版本哈哈:) – L42

+0

@ L42我曾经使用它很多,直到我碰到“工作表中的列数”的限制,至少在2003年和2007年。至于以后不知道版本。我仍然将它用于使用'Array'方法构建的小型数组。但是为了从集合中构建数组,我发现只需写入二维数组就更简单。 –

+0

这正是我所寻找的。现在我需要用这些值来计算。例如如果价值是欧元,那么它应该总结表中的所有值,而英镑则相同。这应该写在左侧EUR 1000 GBP 500 YEN 400 – user24555

0

我不知道如果我没有得到你的问题,但试试这个:

Dim CurrencyArray As Variant 
CurrencyArray = Array("EUR", "GBP", "USD") 
Range("A1:A3") = Application.Transpose(CurrencyArray) 
+0

不完全是...我已经过滤了之前的值。有多种价值(欧元,欧元,欧元,英镑,日元),我不得不将它们减少到欧元,英镑,美元三种价格,我事先不知道该表中有多少种不同的货币。 – user24555