前言|职场实例
大家在日常使用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多重选定区域复制粘贴()
onerrorresumenext
dimsrange()asrange,uprangeasrange,trangeasrange
dimiaslong,areanumaslong
dimminraslong,mincaslong
areanum=selection.areas.count
redimsrange(1toareanum)
minr=activesheet.rows.count
minc=activesheet.columns.count
fori=1toareanum
setsrange(i)=selection.areas(i)
ifsrange(i).row<minrthenminr=srange(i).row
ifsrange(i).column<mincthenminc=srange(i).column
nexti
setuprange=cells(srange(1).row,srange(1).column)
settrange=application.inputbox(prompt:=\"请输入粘贴位置的左上角单元格\",title:=\"多重选定区域复制粘贴\",type:=8)
application.screenupdating=false
fori=1toareanum
srange(i).copy
trange.offset(srange(i).row-minr,srange(i).column-minc).pastespecialpaste:=xlpastevalues
nexti
application.screenupdating=true
endsub
点击上方的“运行-运行子过程/用户窗体”,会弹出一个提示框:”请输入粘贴位置的左上角单元格”,即我们要粘贴存放数据的起始位置。
如果我们想要保持粘贴数据的相对位置不变,需要将这个起始位置设置为:我们复制的不连续的单元格中最上方的单元格所在行的最左边单元格的位置,即f2单元格。在这个提示框里面点击自动识别单元格位置即可。
最后点击“确定”,即可实现数据的复制粘贴。如下图所示:
如果我们想继续复制左表数据源中的其他的不连续区域单元格,即可以继续重复上述的步骤操作即可。如下图所示: