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

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

    • 分享

      VBA基礎(chǔ)16--單元格查找

       L羅樂 2017-05-24

      Option Explicit

      '1 使用循環(huán)查找 (在單元格中查找效率太低)

      '2 調(diào)用工作表函數(shù)

          Sub c1()         '判斷是否存在,并查找所在行數(shù)
            Dim hao As Integer
            Dim icount As Integer
            icount = Application.WorksheetFunction.CountIf(Sheets('庫存明細(xì)表').[b:b], [g3])      '調(diào)用 Excel 程序的工作表函數(shù) CountIf 統(tǒng)計(jì) B 列中 與G3單元格值相同的單元格的數(shù)量
            If icount > 0 Then   '如果數(shù)量大于0
             MsgBox '該入庫單號碼已經(jīng)存在,請不要重復(fù)錄入'     '彈窗提示
             MsgBox Application.WorksheetFunction.Match([g3], Sheets('庫存明細(xì)表').[b:b], 0)           '調(diào)用 工作表函數(shù) Match 函數(shù),要匹配的值是 g3 單元格的值,查找的范圍是 B 列,匹配方式是 0,即找到第一個(gè)匹配的值
            End If
          End Sub

      ***********************************************

      '3 使用Find方法(上一節(jié)有 Find 語法的說明資料)

          Sub c2()
            Dim r As Integer, r1 As Integer
            Dim icount As Integer
            icount = Application.WorksheetFunction.CountIf(Sheets('庫存明細(xì)表').[b:b], [g3])
            If icount > 0 Then
             r = Sheets('庫存明細(xì)表').[b:b].Find(Range('G3'), Lookat:=xlWhole).Row    
              '查找號碼第一次出現(xiàn)的位置,Lookat 參數(shù)指的是匹配方式,xlWhole是完全匹配,xlPart 是部分匹配,這里顯示說明了參數(shù) Lookat 及參數(shù)值,與下面的方式不同,下面的方式是通過位置去匹配的。
             r1 = Sheets('庫存明細(xì)表').[b:b].Find([g3], , , , , xlPrevious).Row 
             '可以參考前一節(jié) find 函數(shù)的語法,find 共有9個(gè)參數(shù),除了第1個(gè),后面的都是可選參數(shù),但如此例要使用第6個(gè)參數(shù)時(shí),前面不指定的參數(shù)要用逗號表示以匹配參數(shù)的位置,后面的則可以省略。
             MsgBox r & ':' & r1
            End If
          End Sub

      **********************************************

         Sub c3()      '返回最下一行非空行的行數(shù)

            MsgBox Sheets('庫存明細(xì)表').Cells.Find('*', , , , , xlPrevious).Row   
               '彈窗信息,在 “庫存明細(xì)表”里的單元格集合中搜索最一個(gè)非空單元格,第1參數(shù)是 星號,表示有任意內(nèi)容的單元格,xlPrevious 是搜索方向向前找,即向下,xlNext向后,即向上

         End Sub


      ==============================
      入庫單實(shí)例圖及代碼

      圖1

      圖2

      Option Explicit
      Sub 輸入()   '此過程實(shí)現(xiàn)入庫單的錄入操作
        Dim c As Integer   '號碼在庫存表中的個(gè)數(shù)
        Dim r As Integer   '入庫單的數(shù)據(jù)行數(shù)
        Dim cr As Integer '庫存明細(xì)表中第一個(gè)空行的行數(shù)
      With Sheets('庫存明細(xì)表')       '注意:當(dāng)前操作的表是 入庫單 這個(gè)表,即 上圖1 ,這里有個(gè) With 的使用,即使用 庫存表的屬性
          c = Application.CountIf(.[b:b], Range('g3'))   '在 圖2 這個(gè)庫存表中的 b 列查找 與 圖1 入庫單 的 G3 單元格 即單號 相匹配的 行數(shù)有多少,也就是查找當(dāng)前單號下有幾個(gè)商品
          If c > 0 Then    '如果商品數(shù)量大于0
             MsgBox '該單據(jù)號碼已經(jīng)存在!,請不要重復(fù)錄入' 
             Exit Sub
          Else    '否則,即如果不存在這個(gè)單號的話
             r = Application.CountIf(Range('b6:b10'), '<>')   '獲取 B6:B10區(qū)域中,非真空即單元格內(nèi)容不為空的單元格個(gè)數(shù),或著當(dāng)前單據(jù)里有商品多少個(gè)
             cr = .[b65536].End(xlUp).Row 1             '只要用到庫存表,因?yàn)榍耙呀?jīng)使用了 with,這里可以省略為 點(diǎn),表示庫存表中 B 列最后一個(gè)有效單元格的行號再加 1,即定位到 這個(gè)單元格的下方單元格
               '如上圖2示,即定位到 B8 單元格的行號


            圖3 圖4
             參考上圖看下面代碼
             .Cells(cr, 1).Resize(r, 1) = Range('e3')    '將入庫單(圖3)里的日期 寫入 到庫存表(圖4)里
             .Cells(cr, 2).Resize(r, 1) = Range('g3')   '將入庫單的單號寫入到庫存表
             .Cells(cr, 3).Resize(r, 1) = Range('c3')    '將入庫單的供貨公司名寫入到庫存表
             .Cells(cr, 4).Resize(r, 6) = Cells(6, 2).Resize(r, 6).Value   '最后將入庫單里的 3 個(gè)商品 寫入到庫存表里去
             MsgBox '輸入已完成'
          End If
      End With
      End Sub

      *******************************************************
      Sub 查找()   '實(shí)現(xiàn)入庫單查尋功能
        Dim c As Integer   '號碼在庫存表中的個(gè)數(shù)
        Dim r As Integer   '入庫單的數(shù)據(jù)行數(shù)

      With Sheets('庫存明細(xì)表')
          c = Application.CountIf(.[b:b], Range('g3'))   '同樣是先到庫存表里 根據(jù)單號去查尋此入庫單里有幾個(gè)商品
          If c = 0 Then '如果結(jié)果是0,表示不存在這個(gè)入庫單
             MsgBox '該單據(jù)號碼不存在!'
             Exit Sub
          Else   '否則就把獲取到的單據(jù)商品信息給調(diào)到入庫單里去
              r = .[b:b].Find(Range('g3'), , , , , xlNext).Row    '使用 Find 函數(shù),在庫存表里向上查找最頂端的與當(dāng)前單號匹配的行的行號
              Range('c3') = .Cells(r, 3)     '從庫存表中提取公司名到入庫對應(yīng) 單頭的 單位位置,即入庫單的 C3 單元格
              Range('e3') = .Cells(r, 1)    '提取日期
              Cells(6, 2).Resize(c, 5) = .Cells(r, 4).Resize(c, 5).Value   '然后就是此單號下的所有商品
             MsgBox '查詢已完成'
          End If
      End With
      End Sub

      ************************************************

      Sub 刪除()     '刪除 指定 入庫單的操作
      Dim c As Integer   '號碼在庫存表中的個(gè)數(shù)
        Dim r As Integer   '入庫單的數(shù)據(jù)行數(shù)

      With Sheets('庫存明細(xì)表')
          c = Application.CountIf(.[b:b], Range('g3'))     '在庫存表里的 B 列查尋當(dāng)前單號下商品的數(shù)量
          If c = 0 Then
             MsgBox '該單據(jù)號碼不存在!'
             Exit Sub
          Else
              r = .[b:b].Find(Range('g3'), , , , , xlNext).Row    '庫存表中  找到第 1 個(gè)商品,并定位它的行號
              .Range(r & ':' & c r - 1).Delete   '根據(jù)定位的行號和商品數(shù)量,將它從庫存表中刪除。
             MsgBox '刪除已完成'
          End If
      End With
      *********************************************
      '由于這不同于 真正的 ERP 系統(tǒng),在 EXCEL 表中,要修改一個(gè)單據(jù)信息,只需要先查尋,再刪除,然后修改后重新錄入一下就好,
      '因?yàn)檫@里的刪除,只在庫存表清除了數(shù)據(jù),但入庫單里的信息還在,作個(gè)修改再錄入即可實(shí)現(xiàn)修改。
      End Sub
      Sub 修改()    
        Call 刪除
        Call 輸入
      End Sub

      =========================
      Excel中MATCH函數(shù)是一個(gè)很強(qiáng)大的輔助函數(shù),

      MATCH函數(shù)語法為:MATCH(lookup_value,lookuparray,match-type)

      lookup_value:表示查詢的指定內(nèi)容;

      lookuparray:表示查詢的指定區(qū)域;

      match-type:表示查詢的指定方式,用數(shù)字-1、0或者1表示,具體如圖:

      =============================
      關(guān)于CountIF 的使用

      許多EXCEL問題都涉及數(shù)據(jù)計(jì)數(shù),對于一些簡單的計(jì)數(shù),通常使用COUNT函數(shù)或COUNTA函數(shù)就可以解決。然而,在實(shí)際的業(yè)務(wù)處理當(dāng)中,往往存在諸多條件的限制,僅僅使用簡單的統(tǒng)計(jì)函數(shù)是無法滿足人們的實(shí)際需求的,例如多條件計(jì)數(shù)、統(tǒng)計(jì)不重復(fù)個(gè)數(shù)等。

      例如,在一個(gè)EXCEL表格中,D列是考生的數(shù)學(xué)考試成績,我們想統(tǒng)計(jì)數(shù)學(xué)成績及格的人數(shù)??梢允褂谩?COUNTIF(D,'>=60')”來實(shí)現(xiàn)。

      本例中,COUNTIF函數(shù)可以對區(qū)域中滿足單個(gè)條件的單元格區(qū)域進(jìn)行計(jì)數(shù)。語法如下:

      COUNTIF(參數(shù)一,參數(shù)二),其中
          參數(shù)一為需要計(jì)算其中滿足條件的單元格數(shù)目的單元格區(qū)域,
          參數(shù)二是用于定義將對哪些單元格進(jìn)行計(jì)數(shù)的數(shù)字、表達(dá)式、單元格引用或文本字符串。

      COUNTIF函數(shù)的常見用法如下:(假如數(shù)據(jù)所在單元格區(qū)域命名為“ Data ”)
      公 式 說 明
      =COUNTIF(Data,'=') 返回真空單元格個(gè)數(shù)(真空單元格是指什么都沒有的單元格,空的單元格)

      =COUNTIF(Data,'') 返回真空 假真空單元格個(gè)數(shù)(假真空是指0字符的空文本) 

      =COUNTIF(Data,'<>') 返回非真空單元格個(gè)數(shù) 

      =COUNTIF(Data,'*') 返回文本型單元格個(gè)數(shù)

      =COUNTIF(Data,'<9.99E 307') 返回?cái)?shù)值型單元格個(gè)數(shù)

      =COUNTIF(Data,'<>''') 返回區(qū)域內(nèi)所有單元格個(gè)數(shù)

      =COUNTIF(Data,'<0') 返回偶包含負(fù)值的單元格個(gè)數(shù)

      =COUNTIF(Data,'<>0') 返回真不等于零的單元格個(gè)個(gè)數(shù)

      =COUNTIF(Data,60) 返回值等于60的單元格個(gè)數(shù)

      =COUNTIF(Data,'>60') 返回值大于60的單元格個(gè)數(shù)

      =COUNTIF(Data,'<60') 返回值小于60的單元格個(gè)數(shù)

      =COUNTIF(Data,'>=60') 返回值大于等于60的單元格個(gè)數(shù)

      =COUNTIF(Data,'<=60') 返回值小于等于60的單元格個(gè)數(shù)

      =COUNTIF(Data,A1) 返回值與A1單元格內(nèi)容相同的單元格個(gè)數(shù)

      =COUNTIF(Data,'>'&A1) 返回值大于A1單元格內(nèi)容的單元格個(gè)數(shù)

      =COUNTIF(Data,'<'&A1) 返回值小于A1單元格內(nèi)容的單元格個(gè)數(shù)

      =COUNTIF(Data,'???') 返回字符等于3的單元格個(gè)數(shù)

      =COUNTIF(Data,'YDL') 返回值等于YDL的單元格個(gè)數(shù)

      =COUNTIF(Data,'YDL?') 返回以字母YDL開頭且字符數(shù)等于4的單元格個(gè)數(shù)

      =COUNTIF(Data,'YDL*') 返回以字母YDL開頭的文本單元格的個(gè)數(shù)

      =COUNTIF(Data,'?YDL*') 返回第2,3,4字符為YDL的單元格個(gè)數(shù)

      =COUNTIF(Data,'*YDL*') 返回含的YDL字符的單元格個(gè)數(shù)

      =COUNTIF(Data,'*'&A1&'*') 返回包含A1單元格內(nèi)容的文本單元格個(gè)數(shù)

      =COUNTIF(Data,TODAY()) 返回值等于當(dāng)前日期的單元格個(gè)數(shù)

      =COUNTIF(Data,'>'&AVERAGE(Data)) 返回大于均值的單元格個(gè)數(shù)

      =SUM(COUNTIF(Data,'>'&{10,15})*{1,-1}返回大于10小于等于15的單元格個(gè)數(shù)

      =SUM(COUNTIF(Data,{TRUE,FALSE})) 返回包含邏輯值的單元格個(gè)數(shù)

      特別指出的是,在EXCEL2010中,新增了一個(gè)多條件計(jì)數(shù)函數(shù),那就是“COUNTIFS” ,假如在一個(gè)EXCEL表格中,D350單元格的內(nèi)容是職工的年齡,E3:E50單元格的內(nèi)容是是否有房,F(xiàn)3:F50單元格的內(nèi)容是是否有車,那么統(tǒng)計(jì)職工中35歲以上有房有車的人數(shù)應(yīng)該用如下公式:

      COUNTIFS(D350,'>35',E3:E50,'是',F3:F50,'是')



        本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲空間,所有內(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ā)表

        請遵守用戶 評論公約

        類似文章 更多