VBA粗獷整理


PART1:

三、查找
1、從某一行向上/下找到第一個不為空的行
intRowPntEnd = ActiveSheet.Cells(intRowPntStart, intColPnt).End(xlDown).Row
m = Range("e65536").End(xlUp).Row
四、定位
2、在某個區域查找標記名稱
For Each std In ActiveSheet.UsedRange

五、行列的range變量
ActiveSheet.Range("F3").Copy ThisWorkbook.Sheets(1).Range("A" & intRowPaste & ":A" & intRowPaste + intRowsCnt - 1)
=INDEX(AC:AC,Q21)
=IF(AND(IFERROR(MATCH(T21,$A$1:$A$99,0),"")<>"",INDEX(AC:AC,Q21)="Y"),N21,0)
=IF(AND(IFERROR(MATCH(T21,$A$1:$A$99,0),"")<>"",IFERROR(INDEX(AC:AC,Q21),"")<>""),"","")

  • 公式篇
    ** 1、通過公式查找

*** Match函數:返回值是數字。
功能:在單元格區域中搜索指定項,然后返回該項在單元格區域中的相對位置。
例:在B列中,但找81所在的行號。
match(81,B:B,0):最后一個0為無序查詢,要寫下才可以使用。

*** Index函數:返回表格或區域中的值或值的引用。
例:在B列中,找第3行的元素值。
index(B:B,3)
此處3也可以使用某個單元格的內容,假如Q1為3,則可寫為index(B:B,Q1)

*** vlookup函數:
功能:搜索某個單元格區域的第一列,返回該區域相同行上任何單元格的值。
例:搜索A2:C10區域的第一列中的值38,返回同一行中第三列的值
vlookup(38,A2:C10,3,false) : false為精確查找,必須的! 找不到時返回錯誤值#N/A

*** find函數

** 2、最大/小值
*** MAX
例:在T列中若有個值等於T35的值,則找出R列中這一行的值的最大值。
MAX(IF($T$1:$T35=$T35,$R$1:$R35))
在完成之后,按Ctrl+SHIFT+Enter,實現即可

*** SMALL
功能:返回數據集中第k個最小值。
例:small(A2:A10,4)
返回A列2行到10行中的第4個最小值
** 3、計數

*** countifs :相當於多個countif
功能:將條件應用於跨多個區域的單元格,並計算符合所有條件的次數
例:查找B2:B5 與 C2:C5區域中同時為是的。
countifs(B2:B5,"是",C2:C5,"是")

2、查詢計數
=IF(OR(AF33="Y",AF33="R"),COUNTIF($U$3:U33,U33),0)
串行使用,並行使用;

  • 操作篇
    ** 1、""發現不可讀取內容。是否恢復此內容?
    方法1:文件 --- 另存為 即可解決。
    方法2:光標在最下面的 "工作表標簽"上右鍵"選定全部工作表",然后右鍵"移動或復制";選擇"新工作簿",並勾選"建立復本",確定。 保存並重命名全新的excel表文件即可。

** 間隔行顏色變更
1、選中要設置顏色變化的區域。
2、點擊菜單“格式”—>“條件格式”
3、選項卡中選擇“公式”,輸入:=MOD(ROW(),2) =0 , 點擊格式,設定顏色。 (偶數行)
4、重復第2、3項,公式中輸入:=MOD(ROW(),2)=1 (奇數行) 公式中的字母 必須大寫
5、確定。

** 每一列的列寬相同

  • VBA 暫存篇
    ** Rows(a & ":" & b).Select
    1、計數:用到的最后一行;
    ** 一行語句若是很長,可以通過換行實現
    方法:語句是 一個空格一個下划: _
    : 字符串是一個空格一個& 一個空格加一個下划:

PART2
一、VBA中錯誤捕捉的方法主要有兩種

第一種捕捉方法:

1、語法:

On Error GoTo Err_Handle '如果遇到錯誤就跳轉到錯誤處理代碼

   語句xxxxx

    Exit Sub/Function(如果沒有這條語句,即使沒有錯誤也會執行錯誤處理語句)

 Err_Handle: 語句 xxxxxx

2、舉例:

Sub 查找數字() ’本段代碼查找電子表格中有沒有數字12

On Error GoTo Err_Handle

   MsgBox Cells.Find(12).Address

    Exit Sub   '如果沒有這個退出過程語句,會一直執行下去

Err_Handle:

    MsgBox ("不存在該數字")s

End Sub

PART3:小結1

  1. 解密
    Activesheet.unprotect (“OTAY”): 解密

  2. 取消刷新
    Application.screenupdating = False

  3. 空的說明
    If range(“C7”) or Range(“C8”) = space(1): 只有一個空格
    Msgbox”hello world”

  4. 詢問數據是否已經寫入,沒有的話給出提示;
    if txtName.text = “ ” then
    msgBox “ 請輸入機型”
    txtName.SetFocus
    Exit Sub
    End if

  5. Worksheets("Sheet1").Range(Cells(1,1),Cells(7,1)).Value= Worksheets("Sheet2").Range(Cells(1, 2), Cells(7, 2)).Value
    兩個工作表間不能用 Range,但一個卻可以用,不明所以。 但以下這種格式的卻是可以的。
    For i = 1 To 6
    r1.Cells(i, 1) = r4.Cells(i, 1)
    Next i

  6. Range
    Range(Cells(1,2),Cells(3,4)).Clear;
    Range(“A1:D4”).Clear;
    Worksheets(“sheet1”).cells().clear: 清除所有數據
    RANGE中可以直接用 字母 ,但CELLS中不行。

  7. 給對象賦值用 SET,此時不能省略; 給普通變量賦值用LET,但一般可以省略。
    8、 concatenate


PART4 小結2
一、條件格式
公式規則:
1、=B2<>”” 若是B2不為0,則執行條件格式;
二、單元格操作
1、選中某個區域 並進行相關操作
Range(“D1:F5”).select 選中了這個區域
selection.clearcontents 刪除數據

三、查找某個文件夾中的文件
Dim ta As Object, ph$, fn$
ph = ThisWorkbook.Path & ""
fn = Dir(ph & "*.xlsx")

四、函數使用
1、INstr函數:某個字符在另一個字符串中首次出現的位置。
例:INstr(1,"hello","o")
從第一個字符開始,搜索字符o出現的位置,返回值為出現位置對應的數字。

五、將單元格內容設為固定的值

  1. 選擇需要進行限制數據的單元格,然后點 數據 -- 數據有效性 -- 數據有效性 ,會彈出數據有效性提示對話框。
  2. 在數據有效性對話框中選擇允許---序列,來源:A,B,C。 中間用半角逗號才行。
    則可以使單元格中的內容只有這三個值。
    15057225715

六:

  1. 一個單元格可以 =AND(C1>90); 這樣這個單元格的值則為 TRUE OR FALSE;
  2. 在條件格式設置中,=C2, 則可以在C2的值不為空時,出現對應的現象。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM