目標區(qū)域中有隱藏行、列Excel 黏貼數據時如何跳過隱藏區(qū)域(隱藏數據區(qū)域外的行列)

      網友投稿 995 2022-06-01

      應用場景

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

      知識要點

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

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

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

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

      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

      '確定黏貼的目標區(qū)域

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

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

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

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

      If .Address <> Selection.Address Then

      '如果可見區(qū)域地址與選區(qū)的地址不一致

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

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

      目標區(qū)域中有隱藏行、列Excel 黏貼數據時如何跳過隱藏區(qū)域(隱藏數據區(qū)域外的行列)

      ActiveSheet.Paste '黏貼數據

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

      Else

      Set Rngg = Selection

      End If

      End With

      Sht.Select '返回原工作表

      '確定目標區(qū)域列數

      For i = 1 To 5000 '循環(huán)

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

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

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

      '如果計數器等于rngg區(qū)域的列數時,終止循環(huán)

      If Col_count = Rngg.Columns.Count Then GoTo begin

      End If

      Next i

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

      begin:

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

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

      For Each Rng In Rngg '遍歷rngg區(qū)域(外層循環(huán))

      For i = 1 To 5000

      '如果cell區(qū)域的j +1 個單元格為顯示狀態(tài),那么終止里層循環(huán)

      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

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

      上一篇:excel怎么轉置(excel怎么轉置行列)
      下一篇:客戶明細表格怎么做(客戶資料明細表格)
      相關文章
      亚洲精品福利视频| 亚洲无码高清在线观看| 色噜噜亚洲精品中文字幕| 四虎亚洲国产成人久久精品| 亚洲乱亚洲乱妇24p| 亚洲性线免费观看视频成熟| 亚洲免费在线观看视频| 亚洲国产夜色在线观看| 亚洲免费一级视频| 亚洲人成在线精品| 亚洲黄色激情视频| 色婷五月综激情亚洲综合| 亚洲人成在线中文字幕| 亚洲综合激情另类小说区| 亚洲毛片在线免费观看| 亚洲天堂一区二区三区四区| 亚洲xxxxxx| 亚洲色图激情文学| 亚洲风情亚Aⅴ在线发布| 亚洲av无码一区二区三区人妖| 亚洲精品无码成人片久久不卡 | 亚洲AV无码成人精品区大在线| 无码不卡亚洲成?人片| 无码专区一va亚洲v专区在线| 国产成人亚洲精品播放器下载| 亚洲精品99久久久久中文字幕| 久久国产成人精品国产成人亚洲| 国产亚洲日韩一区二区三区| 亚洲精品无码Av人在线观看国产 | ZZIJZZIJ亚洲日本少妇JIZJIZ| 国产亚洲精品影视在线产品| 久久被窝电影亚洲爽爽爽| 亚洲AV日韩AV永久无码久久| 亚洲精品中文字幕乱码影院| 亚洲精品二三区伊人久久| 精品国产亚洲AV麻豆| 亚洲午夜精品一级在线播放放 | 亚洲色偷偷综合亚洲AVYP| 国产V亚洲V天堂A无码| 亚洲午夜视频在线观看| 亚洲一区无码中文字幕乱码|