九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開APP
userphoto
未登錄

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

開通VIP
Excel VBA【案例】給Excel表中不連續(xù)區(qū)域批量添加MAX、MIN公式

快速瀏覽

往期合集:【2023年3月】【2023年4月】【2023年5月】【2023年6月2023年7月2023年8月2023年9月

實(shí)用案例

|日期控件||簡(jiǎn)單的收發(fā)存||收費(fèi)管理系(Access改進(jìn)版)|

|電子發(fā)票管理助手||電子發(fā)票登記系統(tǒng)(Access版)|

|文件合并||表格拆分||審計(jì)憑證抽查底稿|

|中醫(yī)診所收費(fèi)系統(tǒng)(Excel版)||中醫(yī)診所收費(fèi)系統(tǒng)(Access版)|

收費(fèi)使用項(xiàng)目

|財(cái)務(wù)管理系統(tǒng)||工資薪金和年終獎(jiǎng)個(gè)稅籌劃|

內(nèi)容提要

  • 批量添加公式

大家好,我是冷水泡茶,今天在知乎上看到一個(gè)提問:EXCEL中一列不連續(xù)的數(shù)據(jù)有n個(gè)連續(xù)的數(shù)據(jù)塊,不同數(shù)據(jù)塊間隔沒有規(guī)律,如何通過公式快速得到如圖結(jié)論?

他要求用“公式”來得出結(jié)論,我想了想,直接用公式來做,難度比較大,至少對(duì)我來說是這樣的。

自從了解了VBA以后,感覺公式?jīng)]有那么香了,你覺得呢?

不管他,我們?cè)囋囉肰BA來解決。

他的需求可以這樣描述:求多個(gè)連續(xù)單元格數(shù)字的最大、最小值,并且要在指定區(qū)域順序列出公式。

我們一起來看一下:

基本思路與實(shí)現(xiàn)過程

1、求得連續(xù)的數(shù)字區(qū)域第一行最后一行的行號(hào)(m,n),這種方法我們分享過很多次了,就是用循環(huán)判斷。
2、定義一個(gè)計(jì)數(shù)變量t,每找到一個(gè)區(qū)域,t+1,用來順序?qū)懭牍?span style="font-family: system-ui, -apple-system, BlinkMacSystemFont, "Helvetica Neue", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 14px;letter-spacing: 0.578px;text-wrap: wrap;background-color: rgb(250, 250, 239);">。
3、根據(jù)m、n的值,構(gòu)造公式,寫入相應(yīng)的單元格。

VBA代碼

一、在模塊1里,makeFormulas過程構(gòu)造公式
Sub makeFormulas()    Dim ws As Worksheet    Dim arr(), t As Integer    Dim lasRow As Integer    t = 1    Set ws = Sheet1    With ws        lastRow = .UsedRange.Rows.Count + 1        arr = .Range("Q1:Q" & lastRow).Value        For i = 2 To UBound(arr) - 1            If Val(arr(i - 1, 1)) = 0 And arr(i, 1) <> 0 Then                m = i            End If            If Val(arr(i + 1, 1)) = 0 And arr(i, 1) <> 0 Then                n = i                t = t + 1                .Cells(t, "R").Formula = "=max(" & .Range("Q" & m & ":Q" & n).Address & ")"                .Cells(t, "S").Formula = "=min(" & .Range("Q" & m & ":Q" & n).Address & ")"            End If        Next    End WithEnd Sub
代碼解析:
1、line2~4,定義工作表對(duì)象ws,數(shù)組arr等。
2、line5,給整型變量t初始賦值為1。
3、line6,把工作表對(duì)象ws設(shè)置為Sheet1,這里使用工作表的代碼名稱,也可以用Sheets("Sheet1"),這兩個(gè)“Sheet1"的含義是不同的,后一個(gè)是工作表的名稱,就是我們?cè)诠ぷ鞅斫缑嫠吹降臉?biāo)簽頁的名稱,可以被修改。
4、line7,With ws,意思就是針對(duì)ws進(jìn)行操作,在With下面,我們就不用再提及ws,直接輸入一個(gè)點(diǎn)".",方法屬性就立即顯示出來,非常方便。
5、line8,給lastRow賦值,意思是最后一行,方法有多種,我比較喜歡用.UsedRange.Rows.Count,使用區(qū)域的行數(shù)。這里“+1”的用途是在數(shù)組最后添加一個(gè)空行。在下面循環(huán)的時(shí)候會(huì)用到i+1,可以避免循環(huán)到最后一行的時(shí)候下標(biāo)越界,并且確保能循環(huán)到最后一個(gè)有數(shù)字的行。
6、line9,把Q列數(shù)據(jù)裝入數(shù)組arr。
7、line10,開始For循環(huán),從數(shù)組arr第2行循環(huán)到倒數(shù)第2行。
8、line11~13,尋找連續(xù)數(shù)據(jù)區(qū)域的第一行m。方法就是判斷上一行為0,且本行不為0,則記下來,m=i。
這里我們用Val函數(shù)把文本轉(zhuǎn)換成數(shù)值。主要原因是它的標(biāo)題是文字,還有的單元格是空值。也可以預(yù)先把a(bǔ)rr的值處理一下,把文本與空值轉(zhuǎn)換為0,其他數(shù)值不變:
For i = 1 To UBound(arr)    arr(i, 1) = Val(arr(i, 1))Next
9、line14~19,找到第一行m之后,接下來再找最后一行n,方法如前,判斷方式改為:判斷一行0,且本行不為0,則記下來,n=i,順便把t增加1。有了首尾行號(hào),我們就可以設(shè)置公式啦。
設(shè)置單元格公式,實(shí)際上就是構(gòu)造一個(gè)字符串,這里我們求一個(gè)區(qū)域的最大或最小值,用MAX、MIN函數(shù)。我們要取得該區(qū)域的地址,即Address,然后加上其他字符即可。
二、在工作表Sheet1里,change事件,調(diào)用makeFormulas構(gòu)造公式過程。
Private Sub Worksheet_Change(ByVal Target As Range)    If InStr(Target.Address, "Q") Then        Call makeFormulas    End IfEnd Sub
代碼解析:當(dāng)Q列單元格值變化的時(shí)候,調(diào)用makeFormulas過程,更新公式與結(jié)果,不用手工去點(diǎn)“公式”命令按鈕。
三、在工作表Sheet1里,CmdMakeFormulas_Click命令按鈕點(diǎn)擊事件,調(diào)用makeFormulas構(gòu)造公式過程。
Private Sub CmdMakeFormulas_Click()    Call makeFormulasEnd Sub
今天的代碼比較少,解釋得有點(diǎn)啰嗦了,有湊字數(shù)的嫌疑,希望你喜歡
。
好,今天就這樣,我們下期再會(huì)。
~~~~~~End~~~~~~

喜歡就點(diǎn)個(gè)、點(diǎn)在看留言評(píng)論、分享一下唄!感謝支持!

案例文件分享說明

  • 案例文件可免費(fèi)分享,但需符合以下要求:

  • 請(qǐng)關(guān)注點(diǎn)贊、點(diǎn)在看點(diǎn)廣告、留言,方便的話分享一下就完美啦!如果不便走上面的“流程”,請(qǐng)打賞,萬分感謝!

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
完全手冊(cè)Excel VBA典型實(shí)例大全:通過368個(gè)例子掌握
EXCEL實(shí)用程序:A表對(duì)應(yīng)數(shù)據(jù)寫B(tài)表
Excel函數(shù)學(xué)習(xí)22:COLUMNS函數(shù)
Excel公式練習(xí)21:在單元格列區(qū)域中輸入連續(xù)的數(shù)字
Vlookup函數(shù)實(shí)例(全)
Excel太強(qiáng)大了,用公式實(shí)現(xiàn)橫向轉(zhuǎn)縱向的操作方法,需要的就進(jìn)來看看
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服