前言|職場實例
大家在日常使用Excel表格中,經常會把一張表格中的部分數據複制粘貼到另一張表格,有時候會提示:Excel中不能對多重選定區域使用此命令的問題,造成了不能夠複制的現象,下面小編就來教你如何解決Excel中不能對多重選定區域使用此命令的難題。
如下圖所示,我們用一個簡單的例子來做說明剖析:
我們想将左邊表格中的A2,B3,C4,D5單元格中的數據一次性複制出來,粘貼到右邊表格對應的位置。
當我們通過按住Ctrl鍵,選中不連續的單元格A2,B3,C4,D5單元格後,右擊鼠标,點擊“複制”按鈕,發現會彈出一個錯誤提示:“無法對多重選擇區域執行此操作”。複制粘貼以失敗告終。
首先我們要知道Excel中的“多重選定區域”是指:進行多次選擇确定下來的區域,也就是按下Ctrl鍵進行選擇得到的區域。如下圖所示:我們通過按住Ctrl鍵選中不連續的單元格B2,B4,B6單元格,注意此時選定區域都在一列(或一行)中,此時右擊鼠标,可以實現正常的複制粘貼。
如下如所示:我們通過按住Ctrl鍵選中不連續的單元格B2,B4,B6單元格的同時,再次選中一個另一列的D6單元格。注意此時選定區域不在一列中,形成了多重區域,此時右擊鼠标,點擊“複制”按鈕後,就會出現“無法對多重選擇區域執行此操作”的錯誤提示。
方案|VBA代碼解決方案
首先,我們依舊通過按住Ctrl鍵,選中不連續的單元格A2,B3,C4,D5單元格後,先不着急右擊點擊複制;而是右擊工作表“Excel情報局”名稱标簽,接着點擊“查看代碼”,彈出VBA代碼錄入界面,将下面一段代碼複制粘貼到VBA代碼錄入界面。
代碼如下:
Sub 多重選定區域複制粘貼()
On Error Resume Next
Dim SRange() As Range, UPRange As Range, TRange As Range
Dim i As Long, AreaNum As Long
Dim MinR As Long, MinC As Long
AreaNum = Selection.Areas.Count
ReDim SRange(1 To AreaNum)
MinR = ActiveSheet.Rows.Count
MinC = ActiveSheet.Columns.Count
For i = 1 To AreaNum
Set SRange(i) = Selection.Areas(i)
If SRange(i).Row < MinR Then MinR = SRange(i).Row
If SRange(i).Column < MinC Then MinC = SRange(i).Column
Next i
Set UPRange = Cells(SRange(1).Row, SRange(1).Column)
Set TRange = Application.InputBox(prompt:="請輸入粘貼位置的左上角單元格", Title:="多重選定區域複制粘貼", Type:=8)
Application.ScreenUpdating = False
For i = 1 To AreaNum
SRange(i).Copy
TRange.Offset(SRange(i).Row - MinR, SRange(i).Column - MinC).PasteSpecial Paste:=xlPasteValues
Next i
Application.ScreenUpdating = True
EndSub
點擊上方的“運行-運行子過程/用戶窗體”,會彈出一個提示框:"請輸入粘貼位置的左上角單元格",即我們要粘貼存放數據的起始位置。
如果我們想要保持粘貼數據的相對位置不變,需要将這個起始位置設置為:我們複制的不連續的單元格中最上方的單元格所在行的最左邊單元格的位置,即F2單元格。在這個提示框裡面點擊自動識别單元格位置即可。
最後點擊“确定”,即可實現數據的複制粘貼。如下圖所示:
如果我們想繼續複制左表數據源中的其他的不連續區域單元格,即可以繼續重複上述的步驟操作即可。如下圖所示:
,