乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      怎么在Excel匯總表中,刪除標(biāo)記顏色以外的表格(包括各明細(xì)表)?

       王斷天崖路 2018-01-31

      不得不說,你這個(gè)問題有點(diǎn)難,其實(shí)也不是難,是惡心。對于一般的沒有VBA基礎(chǔ)的人,處理這個(gè)問題就是通過一步步繁復(fù)的操作來實(shí)現(xiàn)。

      如果說通過篩選去找,數(shù)據(jù)量大的話,這個(gè)事無疑會(huì)惡心死人。

      我看這個(gè)問題在這有一段時(shí)間了,但是也沒人給出靠譜的回答,所以特地寫了一段代碼。經(jīng)測試,完全沒有問題。

      而且,這個(gè)問題提的也很模糊,不太方便給出針對性的做法

      對于寫VBA代碼來說沒有說清楚的地方有以下幾處:

      1. 表格中標(biāo)記的顏色是統(tǒng)一的顏色還是有多種不同的顏色

      2. 表格中被標(biāo)記顏色的地方是對數(shù)據(jù)區(qū)域整行標(biāo)記還是僅對單元格標(biāo)記

      3. 問題中所提到的匯總表和明細(xì)表是不是在同一個(gè)工作簿中

      4. 刪除標(biāo)記顏色以外的表格是單元格刪除還是整行、整列、或者整sheet刪除

      5. 有標(biāo)記顏色但是空白單元格怎么處理

      6. 大概有多少的sheet需要處理,有沒有無標(biāo)記顏色的sheet,有沒有空白sheet

      7. 如果是刪除標(biāo)記顏色以外的單元格,那么如果出現(xiàn)空白行或列,要不要一并刪除

      以上情況都是編寫VBA代碼需要考慮的地方

      我這里呢,根據(jù)給出的模糊問題,簡單的寫了一個(gè)大概能用的宏命令

      先說一下我的思路:

      1. 假設(shè)所有表格是在同一個(gè)工作簿中

      2. 統(tǒng)計(jì)出一共有多少個(gè)工作博,用于做循環(huán)查詢

      3. 找出每個(gè)sheet中沒有被標(biāo)記顏色的單元格,并清除單元格格式及內(nèi)容

      4. 如果有未標(biāo)記顏色且無任何單元格內(nèi)容的表格,則給出提示,并結(jié)束循環(huán)

      5. 如果需要?jiǎng)h除內(nèi)容之前的空白行或列,則刪除整行、整列

      下圖是我做的實(shí)例,有三個(gè)Sheet表,每個(gè)表格中存在標(biāo)注了顏色的行,或單元格:

      Sheet1,標(biāo)題行標(biāo)注顏色,數(shù)據(jù)中整行包含不同顏色

      Sheet2,標(biāo)題行標(biāo)注顏色,數(shù)據(jù)中非整行包含不同顏色

      Sheet3,標(biāo)題行未標(biāo)注顏色,數(shù)據(jù)中非整行包含不同顏色

      VBA編輯器打開方法,快捷鍵:Alt+F11,工程區(qū),插入,模塊

      VBA代碼圖示(源碼占用篇幅較大,我放到最后了):

      其中

      Sub Clear():用于清除未標(biāo)注顏色的非空單元格

      Sub DeleteEmptyRows():用于刪除空行

      Sub DeleteEmptyColumns():用于刪除空列

      代碼執(zhí)行過程中,只執(zhí)行一個(gè)工程,但通過Sub Clear()工程,調(diào)用了Sub DeleteEmptyRows()和Sub DeleteEmptyColumns()

      我們來看一下執(zhí)行代碼的效果:

      代碼執(zhí)行時(shí),為了看效果,我屏蔽了兩條返回sheet1的代碼

      從動(dòng)圖可以看到,代碼執(zhí)行的很快,也達(dá)到了我們的目

      1. 清楚了所有未標(biāo)記顏色的單元格

      2. 清楚了數(shù)據(jù)中的冗余空行

      我再一步一步執(zhí)行代碼,給大家看一下Excel都干了些什么(由于多個(gè)sheet處理機(jī)制一樣,這里只錄制了兩個(gè)sheet的處理過程慢放):

      通過慢放,大家應(yīng)該能看出,代碼真的是很蠢的,它也是一個(gè)一個(gè)的單元格去刪除,然后再去刪除行。

      需要注意的是,如果表格中存在空的sheet,vba會(huì)給出一個(gè)提示,如果空表夾雜在有數(shù)據(jù)的表格中間,那么代碼運(yùn)行到空表的時(shí)候會(huì)退出,直接給出提示,不再向下運(yùn)行。

      提示如下:

      sheet4為一個(gè)空的表格

      對于宏,你也可以再Excel中插入一個(gè)控件,指定到所編寫的宏,之后,點(diǎn)擊控件即可執(zhí)行宏了。操作方法如下:

      ok,就這么多吧,代碼我寫在下邊了,沒有寫注釋,如果有感興趣的朋友可以自己去研究優(yōu)化一下,或者有什么疑問,評論或私信聯(lián)系我即可:

      橫線中間為VBA代碼:

      --------------------------------------

      Sub Clear()

      Dim rng As Range, i As Integer

      For i = 1 To ActiveWorkbook.Worksheets.Count

      ActiveWorkbook.Worksheets(i).Select

      For Each rng In ActiveSheet.UsedRange.SpecialCells(2)

      On Error GoTo Skip

      If rng.Interior.ColorIndex = xlNone Then

      rng.Clear

      End If

      Next

      Call DeleteEmptyRows

      Call DeleteEmptyColumns

      Next

      ActiveWorkbook.Worksheets(1).Select

      Exit Sub

      Skip:

      ActiveWorkbook.Worksheets(1).Select

      MsgBox '已經(jīng)沒有未標(biāo)記顏色的非空單元格'

      End Sub

      Sub DeleteEmptyRows()

      Dim LastRow As Integer, r As Integer

      LastRow = ActiveSheet.UsedRange.Rows.Count

      LastRow = LastRow + ActiveSheet.UsedRange.Row - 1

      For r = LastRow To 1 Step -1

      If WorksheetFunction.CountA(Rows(r)) = 0 Then

      Rows(r).Delete

      End If

      Next r

      End Sub

      Sub DeleteEmptyColumns()

      Dim LastColumn As Integer, c As Integer

      LastColumn = ActiveSheet.UsedRange.Columns.Count

      LastColumn = LastColumn + ActiveSheet.UsedRange.Column

      For c = LastColumn To 1 Step -1

      If WorksheetFunction.CountA(Columns(c)) = 0 Then

      Columns(c).Delete

      End If

      Next c

      End Sub

      --------------------------------------

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多