中文字幕理论片,69视频免费在线观看,亚洲成人app,国产1级毛片,刘涛最大尺度戏视频,欧美亚洲美女视频,2021韩国美女仙女屋vip视频

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
Excel VBA 8.17合并單元格無法篩選? 不不不!讓VBA來優(yōu)化下合并單元格

合并單元格無法篩選?不不不!讓VBA來優(yōu)化下合并單元格


點(diǎn)擊上方“Excel和VBA”,選擇“置頂公眾號(hào)”

致力于原創(chuàng)分享Excel的相關(guān)知識(shí),源碼,源文件打包提供

一起學(xué)習(xí),一起進(jìn)步~~


前景提要

前面我們分好幾節(jié)講述了一些關(guān)于合并單元格的VBA知識(shí),涉及單元格的合并,拆分合并單元格等,但是其實(shí)在日常的工作中,我并不是建議過多的使用合并單元格,因?yàn)樗泻芏嗟木窒扌?,在利用VBA處理合并單元格的時(shí)候,大家應(yīng)該已經(jīng)有所感觸,比方說在我們上節(jié)拆分合并單元格并填充的時(shí)候,拆分之后的單元格a和合并之前的a是完全不同的兩個(gè)單元格,今天我們?cè)僬f一個(gè)場(chǎng)景,是合并單元格在篩選的時(shí)候碰到的問題

場(chǎng)景說明

這里我們簡(jiǎn)單的構(gòu)造一個(gè)模擬數(shù)據(jù),從上面的數(shù)據(jù)中我們可以看到A1有兩行,但是已經(jīng)執(zhí)行了單元格合并操作,我們來看看在這樣的情況,常規(guī)的篩選只有會(huì)有什么

對(duì)比的篩選下,我們可以看到?jīng)]有合并的單元格A2篩選之后能夠準(zhǔn)確的顯示2行數(shù)據(jù)

但是已經(jīng)操作合并單元格的A1,在執(zhí)行篩選之后,就剩下簡(jiǎn)單的一行,這會(huì)造成明顯的數(shù)據(jù)缺失

這也是我前面說并不提倡大家過多使用合并單元格的原因。

但是有時(shí)候是其他同事發(fā)給我們的表格,我們沒有辦法取消合并了,畢竟可能會(huì)涉及格式等方面的變動(dòng),那么在這樣的情況下,我們要如何在不改變合并單元格的情況下,又可以準(zhǔn)確的篩選數(shù)據(jù)呢?

代碼區(qū)

Sub hb()Dim rng As Range, a As Range, i&, sth As Worksheet, sth1 As WorksheetSet sth = ActiveSheetSet rng = Application.InputBox("請(qǐng)選擇存在單元格的區(qū)域", "單元格的處理", , , , , , 8)For Each a In rng    If a.MergeCells = False Then        MsgBox "當(dāng)前選取存在非合并單元格,無法執(zhí)行操作"        Exit Sub    End IfNext anumr = rng.Rows.Countrowss = rng.Rowcolunmss = rng.ColumnColumns(colunmss + 1).Insertrng.SelectSelection.Copy Selection.Offset(0, 1)rng.SelectSelection.UnMergeSelection.SpecialCells(xlCellTypeBlanks).SelectFor Each a In Selection    a.FormulaArray = "=R[-1]C"Next aRange(Cells(rowss, colunmss + 1), Cells(rowss + numr - 1, colunmss + 1)).SelectSelection.CopySelection.Offset(0, -1).PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _        SkipBlanks:=False, Transpose:=FalseApplication.CutCopyMode = FalseColumns(colunmss + 1).Delete        End Sub

來看看代碼實(shí)現(xiàn)的效果

代碼解析

要想知道今天代碼如何實(shí)現(xiàn)的,至少我們需要知道,這樣處理的思路邏輯

常規(guī)的合并單元格,在執(zhí)行篩選之后,肯定是沒有辦法顯示全部數(shù)據(jù)的,那么今天的代碼是如何實(shí)現(xiàn)的?

我們把代碼拆開來,一步步執(zhí)行看下

從上面的GIF,我們可以看到代碼是增加了一個(gè)輔助列,然后將含有合并單元格的區(qū)域,全部復(fù)制到右邊,即剛剛插入的單元格中了

這一部分的操作就比較好理解,沒有什么難點(diǎn)

我們繼續(xù)往下執(zhí)行

看起來后面的代碼雖然比較復(fù)雜,但是也沒有執(zhí)行任何的操作,除了操作單元格的取消合并之外,好像并沒有什么動(dòng)作,那么為什么代碼執(zhí)行合并后的單元格又可以進(jìn)行篩選呢?

我們來看看關(guān)鍵的代碼部分

Selection.Offset(0, -1).PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False

這里其實(shí)是一個(gè)格式化的操作

將右邊的合并單元格的格式,復(fù)制給左邊,我們剛剛通過代碼取消合并的單元格,這樣單元格雖然有了合并單元格的格式,但是實(shí)際上他的本質(zhì)是三個(gè)并沒有合并的單元格

我們這里將代碼優(yōu)化過的單元格復(fù)制到其他的單元格看看

很明顯,單元格其實(shí)并沒有合并,是分開的三個(gè)單元格,但是單元格樣式上,卻是合并單元格的樣式,這就是我們利用VBA代碼優(yōu)化合并單元格的精髓所在

然后再來執(zhí)行篩選,就非常的輕松了,也不會(huì)有任何的問題了。

==========================

好了,明晚21:00,準(zhǔn)時(shí)再見!

因?yàn)楣娞?hào)沒有留言功能(開的比較晚),所以建立一個(gè)線下微信群,主要為大家提供一個(gè)交流的平臺(tái),同時(shí)大家也可以提一些對(duì)公眾號(hào)的意見和看法,大家一起學(xué)習(xí),一起進(jìn)步。

因?yàn)榻诩尤喝藛T太雜,需要入群的小伙伴可以先加我微信,備注“加群”我會(huì)拉進(jìn)群,不備注,不加的哦~~

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
VBA判斷Excel選擇區(qū)域是否有合并單元格
#Excel VBA#解讀(43):快速定位到特定的單元格——SpecialCells方法
Excel里的相對(duì)引用不能用??jī)蓚€(gè)公式拯救你
Excel技巧:快速處理單元格內(nèi)的換行符
Excel之VBA常用功能應(yīng)用篇:批量增加批注的逆操作,批量刪除
Excel VBA編程的常用代碼
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服