返回列表 上一主題 發帖

[發問] 如何合併陣列

回復 8# Hsieh

請問為何要用 2個 Application.Transpose(Application.Transpose(A)) 來轉?
  1. A1].Resize(UBound(A) + 1, 3) = Application.Transpose(Application.Transpose(A)) '陣列A寫入工作表
複製代碼
當然我測試了一下 A1].Resize(UBound(A) + 1, 3) = A,這代碼沒有寫回工作表

我寫一個小例子如下,不用Application.Transpose(Application.Transpose(A))卻可以寫回工作表,
請問之間的差異是什麼?
  1. Sub test2()
  2. A = Evaluate("{""A1"",""B1"",""C1"";""A2"",""B2"",""C2"";""A3"",""B3"",""C3""}")
  3. [A1:F6] = ""
  4. [A1].Resize(3, 3) = A
  5. End Sub
複製代碼
{...} 表示需要用 CTRL+SHIFT+ENTER 三鍵輸入公式

TOP

回復 12# GBKEE

有點不太懂,請看看我的理解是否正確

A = Array(Array("A1", "B1", "C1"), Array("A2", "B2", "C2"), Array("A3", "B3", "C3"))
當 [A1:C3]=A 時,範圍儲存格視A為一維陣列,可是每個陣列其實又是為一個一維陣列,所以一個儲存格只能放入一個值沒有辦法儲存一組陣列,所以無法顯示

B = Application.Transpose(A)  或 B = Application.Transpose(Application.Transpose(A)) 時,會變成二維陣列,所以範圍儲存格就可以接受寫入陣列值。

A = Array("A1", "B1", "C1")
當 [A1:C3]=A 時,範圍儲存格視A為一維陣列,每陣列只有一值所有可以寫入
{...} 表示需要用 CTRL+SHIFT+ENTER 三鍵輸入公式

TOP

        靜思自在 : 要比誰更受誰.不要比誰更怕誰。
返回列表 上一主題