目標區域中有隱藏行、列Excel 黏貼數據時如何跳過隱藏區域

      網友投稿 1452 2022-06-09

      應用場景

      將excel黏貼時僅僅黏貼在顯示的單元格中(當目標區域中有隱藏行、列、或者目標區域處于篩選狀態,excel黏貼數據時不會跳過隱藏區域)

      知識要點

      1:SpecialCells(xlCellTypeVisible)  定位可見區域,

      2:如果被復制區域有隱藏區域,那么創建一個輔助工作表,將被復制區域的可見區域黏貼到輔助工作表

      3:黏貼后的區域不在存在隱藏區域,然后將選區的單元格逐個復制到目標區域,在復制時檢查它的狀態是否為顯示

      Sub 黏貼數據時跳過隱藏區()

              Dim Rng As Range, Rngg As Range, Cell As Range, i As Long, Rang As Range, Sht As Worksheet, j As Integer, Col_count As Integer

              On Error Resume Next

              If TypeName(Selection) = "Range" Then  '僅僅對選擇對象是單元格者進行操作

                  Set Sht = ActiveSheet   '將當前工作表賦值給變量sht

                  '確定黏貼的目標區域

                  Set Cell = Application.InputBox("請選擇目標區域存放區域,一個單元格即可", "目標區域", , , , , , 8)

                  If Err <> 0 Then Exit Sub '如果有錯誤則退出

                  Application.ScreenUpdating = False  '關閉屏幕刷新

                  With Selection.SpecialCells(xlCellTypeVisible) '定位選區的可見區域

                      If .Address <> Selection.Address Then

                      '如果可見區域地址與選區的地址不一致

                          Selection.SpecialCells(xlCellTypeVisible).Copy  '復制選區的可見區域

                          Sheets.Add after:=Sheets(Sheets.Count) '添加一個新表

                          ActiveSheet.Paste '黏貼數據

                          Set Rngg = Selection '將新表中的選區賦予變量

                      Else

                          Set Rngg = Selection

                      End If

                  End With

                  Sht.Select '返回原工作表

                  '確定目標區域列數

                  For i = 1 To 5000 '循環

                      '如果目標存放區域的第一個單元格向右偏移 i-1 的單元格的列寬大于(也就是說顯示狀態)

                      If Cell.Offset(0, i - 1).ColumnWidth > 0 Then

                          Col_count = Col_count + 1 '那么累加計數器,該計數器代表顯示區域的列數

                          '如果計數器等于rngg區域的列數時,終止循環

                          If Col_count = Rngg.Columns.Count Then GoTo begin

                      End If

                  Next i

      目標區域中有隱藏行、列Excel 黏貼數據時如何跳過隱藏區域

                  '開始復制選區中可見單元格到目標區域中的可見單元格中

      begin:

                  Set Cell = Cell.Resize(Rngg.Rows.Count, i)

                  '根據rngg的列數和變量i重新指定cell代表的區域

                  For Each Rng In Rngg '遍歷rngg區域(外層循環)

                      For i = 1 To 5000

                          '如果cell區域的j +1 個單元格為顯示狀態,那么終止里層循環

                          If Cell(j + i).RowHeight > 0 And Cell(j + i).ColumnWidth > 0 Then GoTo Star

                      Next

      Star:

                          j = j + 1 '累加變量

                          Rng.Copy Cell(j) '逐個復制單元格

                  Next Rng

                  If Selection.SpecialCells(xlCellTypeVisible).Address <> Selection.Address Then

                      Application.DisplayAlerts = False

                      Sheets(Sheets.Count).Delete

                      Application.DisplayAlerts = True

                  End If

                  Application.ScreenUpdating = True

              End If

      End Sub

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:Excel 圖表設置成高端大氣上檔次的各種技巧 附美化后的效果
      下一篇:工作中經常用到的Excel 下拉列表 分兩步操作便可輕松實現 不容錯過
      相關文章
      亚洲精品天堂在线观看| 亚洲国产高清在线| 亚洲免费在线视频| 国产亚洲综合久久系列| 久久久久国产成人精品亚洲午夜| 在线观看亚洲精品专区| 亚洲精品国产摄像头| 亚洲国产欧洲综合997久久| 亚洲午夜精品一区二区麻豆| 亚洲综合av一区二区三区不卡| 亚洲精品亚洲人成在线播放| 亚洲一区二区三区高清视频| 亚洲一区二区三区在线| 亚洲三级中文字幕| 精品久久亚洲中文无码| 77777午夜亚洲| 亚洲a∨无码男人的天堂| 亚洲成a人片在线观看精品| 激情综合亚洲色婷婷五月| 亚洲最大中文字幕无码网站 | 国产精品亚洲综合专区片高清久久久| 亚洲AV无码乱码在线观看| 亚洲A丁香五香天堂网| 亚洲精品岛国片在线观看| 国产啪亚洲国产精品无码| 中文字幕亚洲综合久久菠萝蜜| 亚洲色婷婷六月亚洲婷婷6月| 精品久久香蕉国产线看观看亚洲| 久久精品国产亚洲av麻| 久久久久亚洲Av无码专| 亚洲剧情在线观看| 亚洲熟女www一区二区三区| 老牛精品亚洲成av人片| 亚洲乱亚洲乱少妇无码| 亚洲熟妇av一区二区三区| 亚洲AV第一页国产精品| 亚洲性色成人av天堂| 亚洲精品国产综合久久久久紧| 亚洲精品岛国片在线观看| 亚洲国产精品无码久久久不卡| 91亚洲自偷手机在线观看|