EXCEL中將複製的內容粘貼到可見單元格?

EXCEL中可以通過設置(快捷方式Ctrl+G)定位-->定位條件-->可見單元格來選擇並複製可見單元格,但是如果將複製的單元格粘貼到包含隱藏單元格的區域時,EXCEL不會自動跳過這些隱藏的單元格,影響編輯效果。通過以下方法可以實現只對可見的單元格進行復制和粘貼的操作。

工具/原料

各版本EXCEL

方法/步驟

本方法要使用EXCEL VBA宏代碼進行操作,代碼如下:

Option Explicit

Sub 複製粘貼可見單元格()

Dim rgSrc As Range

Dim rgDes As Range

Dim rg As Range, rgPt As Range

Dim strSrcAdd() As String

Dim lCnt As Long, i As Long, j As Long, x As Long, y As Long

On Error GoTo ExitPoint

Set rgSrc = Application.InputBox("請選擇要複製的單元格區域", "提示", , , , , , 8)

If rgSrc.Columns.Count > rgSrc.Parent.UsedRange.Columns.Count Then

Set rgSrc = rgSrc.Parent.Range(rgSrc.Item(1, 1), rgSrc.Item(rgSrc.Rows.Count, rgSrc.Parent.UsedRange.Columns.Count))

End If

If rgSrc.Rows.Count > rgSrc.Parent.UsedRange.Rows.Count Then

Set rgSrc = rgSrc.Parent.Range(rgSrc.Item(1, 1), rgSrc.Item(rgSrc.Parent.UsedRange.Rows.Count, rgSrc.Columns.Count))

End If

Set rgDes = Application.InputBox("請選擇要粘貼的單元格位置", "提示", , , , , , 8)

Application.ScreenUpdating = False

Application.Calculation = xlCalculationManual

Set rgPt = rgDes.Cells(1, 1)

ReDim strSrcAdd(0)

For Each rg In rgSrc

If Not (rg.Height = 0 Or rg.Width = 0) Then

ReDim Preserve strSrcAdd(UBound(strSrcAdd) + 1)

strSrcAdd(UBound(strSrcAdd)) = rg.Address

End If

Next rg

lCnt = 0

For Each rg In rgSrc.Parent.Range((rgSrc.Rows(1).Address))

If rg.Width <> 0 Then

lCnt = lCnt + 1

End If

Next

strSrcAdd(0) = lCnt

i = 0

j = 0

x = 0

y = 0

For lCnt = 1 To UBound(strSrcAdd)

lp: If ((lCnt - 1) \ strSrcAdd(0)) + i > x Then

j = 0

End If

x = ((lCnt - 1) \ strSrcAdd(0)) + i

y = ((lCnt - 1) Mod strSrcAdd(0)) + j

Set rg = rgPt.Offset(x, y)

If rg.Width = 0 Then

j = j + 1

GoTo lp

ElseIf rg.Height = 0 Then

i = i + 1

j = 0

GoTo lp

Else

rg.Value = rgSrc.Parent.Range(strSrcAdd(lCnt))

End If

Next lCnt

rgDes.Parent.Activate

ExitPoint:

Application.ScreenUpdating = True

Application.Calculation = xlCalculationAutomatic

End Sub

下面將以一個示例的方式,演示如何使用以上代碼。

圖中標黃色的為要隱藏的單元格,隱藏前後效果如圖所示。

EXCEL中將複製的內容粘貼到可見單元格

EXCEL中將複製的內容粘貼到可見單元格

在相應的工作表上點擊右鍵,在彈出的窗口中選擇“查看代碼”

EXCEL中將複製的內容粘貼到可見單元格

在打開的VBE界面中粘貼以上覆制的代碼。

EXCEL中將複製的內容粘貼到可見單元格

EXCEL中將複製的內容粘貼到可見單元格

在“查看宏”對話框中選擇並運行名為“複製粘貼可見單元格”的宏。宏的使用方法,請另外百度。

EXCEL中將複製的內容粘貼到可見單元格

先選擇要複製的單元(也可以是整行或整列),然後選擇要粘貼的單元格位置(可以多選,也可以只選一個,都是以選擇區域的活動單元為開始粘貼位置)。

EXCEL中將複製的內容粘貼到可見單元格

EXCEL中將複製的內容粘貼到可見單元格

粘貼完成後對比效果如下圖,宏只對可見的單元格進行了操作。

EXCEL中將複製的內容粘貼到可見單元格

EXCEL中將複製的內容粘貼到可見單元格

注意事項

不可以跨工作簿操作

相關問題答案