Board logo

標題: 想請問大大如何把儲存格資料對換? [打印本頁]

作者: tku0216    時間: 2011-11-16 17:17     標題: 想請問大大如何把儲存格資料對換?

請問大大們,
    我有一份excel表格,假設所佔的位置為a1:c10(共3欄10列),我可否用程式控制,將特定的“兩列”資料對調。
例如:A1:A3與C1:C10整列對換。
作者: mark15jill    時間: 2011-11-16 17:25

本帖最後由 mark15jill 於 2011-11-16 17:27 編輯

方法1..
如 A1:A3與C1:C10整列對換  (這應該是 整欄吧
先將 A1:A3 複製到 D1到D3
在把C1:C10  複製到 A1:A3
把D1到D3 貼到 C1:C10..

方法2:
A欄複製到 D欄
C欄剪下貼上到A欄
D欄剪下貼上到C欄


簡單原始碼如下
  1. Sub Macro1()
  2. '
  3. ' Macro1 Macro
  4. '
  5. ' 快速鍵: Ctrl+Shift+R
  6. '
  7.     Columns("A:A").Select
  8.     Selection.Copy
  9.     Columns("D:D").Select
  10.     ActiveSheet.Paste
  11.     Columns("C:C").Select
  12.     Application.CutCopyMode = False
  13.     Selection.Copy
  14.     Columns("A:A").Select
  15.     ActiveSheet.Paste
  16.     Columns("D:D").Select
  17.     Application.CutCopyMode = False
  18.     Selection.Copy
  19.     Columns("C:C").Select
  20.     ActiveSheet.Paste
  21.     Columns("D:D").Select
  22.     Application.CutCopyMode = False
  23.     Selection.ClearContents
  24. End Sub
  25. Sub Macro2()
  26. '
  27. ' Macro2 Macro
  28. '
  29. ' 快速鍵: Ctrl+Shift+T
  30. '
  31.     Range("A1:A3").Select
  32.     Selection.Copy
  33.     Range("D1").Select
  34.     ActiveSheet.Paste
  35.     Range("C1:C10").Select
  36.     Application.CutCopyMode = False
  37.     Selection.Copy
  38.     Range("A1").Select
  39.     ActiveSheet.Paste
  40.     Range("D1:D3").Select
  41.     Application.CutCopyMode = False
  42.     Selection.Copy
  43.     Range("C1").Select
  44.     ActiveSheet.Paste
  45.     Range("D1:D4").Select
  46.     Application.CutCopyMode = False
  47.     Selection.ClearContents
  48. End Sub
複製代碼

作者: tku0216    時間: 2011-11-16 17:57

本帖最後由 tku0216 於 2011-11-16 18:01 編輯

多謝指點,不過這應該是用錄製巨集的方式完成的,是否有更好的辦法呢?因為若是需要調換的儲存格不只是我問題所問的,而是需要由使用者自行選擇,那就不合用了。
作者: GBKEE    時間: 2011-11-16 18:06

回復 3# tku0216
A1:A3與C1:C10整列對換  要如何換法?
是這樣嗎? (對換)
  1.   Sub Ex()
  2.     Dim AR1, AR2
  3.     AR1 = [A1:A3]
  4.     AR2 = [C1:C3]
  5.     [A1:A3] = AR2
  6.     [C1:C3] = AR1
  7. End Sub
複製代碼

作者: tku0216    時間: 2011-11-16 18:34

多謝版主分享,我對這個公式很有興趣,因為以我以前寫程式的經驗,一般來說都需要設定一個暫存格,把資料移到暫存空間,再進行對換,但是看起來excel似乎不必。

還有想請教版主,如果沒有指定哪兩列,而是由使用者自行選擇,那麼程式該怎麼改?
(譬如是否可以選擇B1:B3以及D13,按下按鈕,兩列對換)
作者: oobird    時間: 2011-11-16 20:25

  1. Sub 對換()
  2. a = Range(Selection.Areas(1).Address)
  3. b = Range(Selection.Areas(2).Address)
  4. Range(Selection.Areas(1).Address) = b
  5. Range(Selection.Areas(2).Address) = a
  6. End Sub
複製代碼

作者: tku0216    時間: 2011-11-17 13:35

謝謝版主分享,我馬上去試試看~~
作者: tku0216    時間: 2011-11-17 15:47

真的是相當神奇,感謝各位讓我又多學了一招。




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)