使用Excel VBA,我试图在新创建的工作表中填充一小组单元格。当我使用以下代码时:
Sub CreateFormulaDataSheet()
Dim currentWs As Worksheet
Dim formWs As Worksheet
Dim titles As String
Dim valuesArr As Variant
If Not SheetExists("FormulaData") Then
'create new sheet
Set currentWs = ActiveWorkbook.ActiveSheet
With ActiveWorkbook
Set formWs = .Sheets.Add(After:=.Sheets(.Sheets.Count))
formWs.Name = "FormulaData"
formWs.Activate
'populate with default values
valuesArr = Array(1, 3, 6)
Range(Cells(4, 1), Cells(6, 1)).Value = valuesArr
End With
End Sub
我得到的是这样:
我想要的是这个
为什么Range函数仅填充数组中的第一个元素?
我知道这只是要更新的几个单元格,因此我可以轻松地分别设置每个单元格的值,但是我想了解为什么我的代码不起作用以及解决方案是什么,以便下次使用时有50个单元格要更新,我将不必有50个单独的单元格分配。 ;-)
答案 0 :(得分:3)
您正在寻找转置方法:
Sub CreateFormulaDataSheet()
Dim currentWs As Worksheet
Dim formWs As Worksheet
Dim titles As String
Dim valuesArr As Variant
If Not SheetExists("FormulaData") Then
'create new sheet
Set currentWs = ActiveWorkbook.ActiveSheet
With ActiveWorkbook
Set formWs = .Sheets.Add(After:=.Sheets(.Sheets.Count))
formWs.Name = "FormulaData"
formWs.Activate
'populate with default values
valuesArr = Array(1, 3, 6)
Range("A4").Resize(UBound(valuesArr) + 1, 1).Value = Application.Transpose(valuesArr)
End With
End If
End Sub
为简单起见,假设水平存储了1个三维数组。与工作表中的数据相同,如果要将其分配到垂直范围,则必须先对其进行转置。
我使用的第二件事是Resize()方法,它将根据您的数组大小方便地扩展目标范围。
答案 1 :(得分:1)
在const ChildComponent = props => (
<div>
{props.data && (
<div>
<h3>{props.data.city}</h3>
<h4>{props.data.main.temp_min}</h4>
</div>
)}
</div>
);
是局限性的情况下,请在前面填充2D数组并直接转储到图纸上。
Transpose