Log in
Close

Ví dụ VBA Excel Scripting Dictionary

VBA Excel / Download

Ví dụ VBA Excel Scripting Dictionary

Dictionary (Dic) là một phần trong thư viện Microsoft Scripting Runtime (scrrun.dll), cho phép lưu trữ và truy xuất số lượng lớn Item theo Key duy nhất tương ứng.


1. Khai báo


1.1. Kiểu khai báo sớm


(Có Tooltip khi gọi Dic, phải thiết lập trong Tools/References)    


– Trong cửa sổ VBA, Tools menu, References.


– Tìm và check vào mục “Microsoft Scripting Runtime” trong cửa sổ References – VBAProject.


Khai báo trong code:



Dim Dic As Scripting.Dictionary

 


Set Dic = New Scripting.Dictionary



 1.2. Kiểu khai báo muộn


(Không có Tooltip khi gọi Dic, không cần thiết lập trong Tools/References).


Khai báo trong code: 



Dim Dic As Object

 


Set Dic = CreateObject("Scripting.Dictionary")



2. Các phương thức


2.1. Add


Dic.Add Key, Item

Thêm Item (đối tượng) vào Dic, yêu cầu Key của Item phải chưa tồn tại trong Dic.


Key: Nhận dữ liệu là kiểu số hoặc kiểu chuỗi, yêu cầu Key là duy nhất trong Dic.


Item: Nhận kiểu dữ liệu là chuỗi hoặc số, bao gồm cả rỗng. Item có thể là một giá trị đơn hoặc một mảng (Array).


Ví dụ:



Sub AddMethod()
    'Dic.Add Key, Item'
    Dim Dic As Object
    Set Dic = CreateObject("Scripting.Dictionary")
    Dic.Add "KeyA", 10
    Dic.Add "KeyB", "Item2"
    Dic.Add "KeyC", ""
    Dic.Add "KeyD", Array(20, 50)
End Sub

2.2. Exists


Dic.Exists(Key)

Kiểm tra sự tồn tại của một Key trong Dic. Trả về True nếu Key đó tồn tại trong Dic, ngược lại trả về False.


Ví dụ:



Sub ExistsMethod()
    'Dic.Exists(Key) '
    Dim Dic As Object
    Set Dic = CreateObject("Scripting.Dictionary")
    Dic.Add "KeyA", 10
    MsgBox Dic.Exists("KeyA")   'True'
End Sub

2.3. Remove


Dic.Remove(Key)

Xóa một Item trong Dic theo Key chỉ định. Nếu Key chỉ định chưa tồn tại trong Dic thì sẽ xảy ra lỗi.


Ví dụ: 



Sub RemoveMethod()
    'Dic.Remove(Key) '
    Dim Dic As Object
    Set Dic = CreateObject("Scripting.Dictionary")
    Dic.Add "KeyA", 10
    Dic.Remove ("KeyA")
    MsgBox Dic.Exists("KeyA")   'False'
End Sub

2.4. RemoveAll


Dic.RemoveAll

Xóa tất cả các Items có trong Dic.


Ví dụ:



Sub RemoveAllMethod()
    'Dic.RemoveAll'
    Dim Dic As Object
    Set Dic = CreateObject("Scripting.Dictionary")
    Dic.Add "KeyA", 10
    Dic.Add "KeyB", 20
    Dic.RemoveAll
    MsgBox Dic.Count    '0'
End Sub

 


2.5. Items


Dic.Items

Trả về một mảng một chiều gồm toàn bộ Items có trong Dic.


Mảng một chiều này luôn có cận dưới bằng 0, dù khai báo Option Base 1


Ví dụ:



Sub ItemsMethod()
    'Dic.Items'
    Dim Dic As Object, Arr()
    Set Dic = CreateObject("Scripting.Dictionary")
    Dic.Add "KeyA", 10
    Dic.Add "KeyB", 20
    Arr = Dic.Items     'LBound(Arr) = 0'
End Sub

2.6. Keys


Dic.Keys

Trả về một mảng một chiều gồm toàn bộ Keys tồn tại trong Dic.


Mảng một chiều này luôn có cận dưới bằng 0, dù khai báo Option Base 1


Ví dụ: 



Sub KeysMethod()
    'Dic.Keys'
    Dim Dic As Object, Arr()
    Set Dic = CreateObject("Scripting.Dictionary")
    Dic.Add "KeyA", 10
    Dic.Add "KeyB", 20
    Arr = Dic.Keys     'LBound(Arr) = 0'
End Sub

3. Thuộc tính


3.1. Item



Dic.Item(Key) 

 


'Hoặc:' 


Dic(Key)



– Gọi Item theo Key chỉ định. Nếu Key chỉ định chưa tồn tại trong Dic, thì Dic sẽ tự động thêm (Add) Key đó vào, và Item ứng với Key đó là rỗng.


– Thay đổi giá trị của Item theo Key chỉ định. Nếu Key chỉ định chưa tồn tại trong Dic, thì Dic sẽ tự động thêm (Add) key đó vào, và Item ứng với Key đó có giá trị vừa đưa vào.


Ví dụ: 



Sub ItemProperty()
    'Dic.Item(Key)'
    'Dic(Key)   '
    Dim Dic As Object, x, y, z
    Set Dic = CreateObject("Scripting.Dictionary")
    Dic.Add "KeyA", 10
    Dic.Add "KeyB", 20
    x = Dic.Item("KeyA") '10'
    y = Dic("KeyA") '10'
    z = Dic("KeyC")
    Dic("KeyC") = 100
    MsgBox Dic.Item("KeyC") '100'
    MsgBox Dic.Count    '3'
End Sub

3.2. Key


Dic.Key(Key) = NewKey

Dùng để thay đổi giá trị mới của một Key chỉ định đã tồn tại trong Dic. Yêu cầu:


– Key chỉ định phải đã tồn tại trong Dic


– Giá trị mới của Key đó phải là duy nhất trong Dic (tức là có thể vẫn là giá trị cũ).


Ví dụ:



Sub KeyProperty()
    'Dic.Key(Key)=NewKey'
    Dim Dic As Object
    Set Dic = CreateObject("Scripting.Dictionary")
    Dic.Add "KeyA", 10
    Dic.Key("KeyA") = "KeyB"
End Sub

3.3. Count


Dic.Count

Trả về số Items có trong Dic.


Ví dụ:



Sub CountProperty()
    'Dic.Count '
    Dim Dic As Object, i As Long
    Set Dic = CreateObject("Scripting.Dictionary")
    For i = 1 To 5
        Dic.Add "Key" & i, ""
    Next i
    MsgBox Dic.Count    '5'
End Sub

3.4. CompareMode



Dic.CompareMode = BinaryCompare 

 


Dic.CompareMode = TextCompare



Thiết lập thuộc tính phân biệt chữ hoa chữ thường cho giá trị của Key.


BinaryCompare: (Giá trị mặc định của Dic) Phân biệt chữ hoa chữ thường


TextCompare: Không phân biệt chữ hoa chữ thường


Lưu ý: Thiết lập CompareMode cho Dic khi Dic rỗng (chưa có item nào trong Dic).


Ví dụ:



Sub CompareModeProperty()
    'Dic.CompareMode = vbBinaryCompare'
    'Dic.CompareMode = vbTextCompare '
    Dim Dic As Object, i As Long
    Set Dic = CreateObject("Scripting.Dictionary")
    With Dic
      .CompareMode = vbBinaryCompare
      '.CompareMode = vbTextCompare '
      .Add "code", "lower"
      .Add "CODE", "UPPER"
    End With
End Sub

4. Ứng dụng


– Lọc loại trùng.


– Tạo dãy số ngẫu nhiên không trùng.


– …


4.1. Một số hàm


Hàm lọc loại trùng cột đầu tiên của một Range:



'//Loc loai trung mot cot'
Function UniqueColumn1D(ByVal Rng As Range) As Variant
    If Rng.Count = 1 Then UniqueColumn1D = Rng.Value: Exit Function
    Dim Dic As Object, i As Long, arr()
    arr = Rng.Value
    Set Dic = CreateObject("Scripting.Dictionary")
    For i = LBound(arr, 1) To UBound(arr, 1)
        If arr(i, 1) <> "" And Dic.Exists(arr(i, 1)) = False Then
            Dic.Add arr(i, 1), ""
        End If
    Next i
    UniqueColumn1D = Dic.Keys
End Function

Hàm lọc loại trùng cột đầu tiên cho mảng 2 chiều: 



'//Loc loai trung mang 2 chieu'
Function UniqueArray(ByVal arr As Variant) As Variant
    If IsArray(arr) = False Then Exit Function
    Dim Dic As Object, i As Long
    Set Dic = CreateObject("Scripting.Dictionary")
    For i = LBound(arr, 1) To UBound(arr, 1)
        If arr(i, 1) <> "" And Dic.Exists(arr(i, 1)) = False Then
            Dic.Add arr(i, 1), ""
        End If
    Next i
    UniqueArray = Dic.Keys
End Function

4.2. Ví dụ


Cho bảng dữ liệu như dưới. Yêu cầu, căn cứ vào cột [B] – Code để loại loại trùng, kết quả trả về gồm 4 cột dữ liệu:


[No.] là thứ tự danh mục Code,


[Code] là danh mục Code sau khi loại trùng,e


[Date] là ngày ứng với Code đầu tiên tìm thấy, xét từ trên xuống,


[Quantity] là tổng ứng với mỗi [Code] lọc được.


 




– Code trong Module: 



Sub FilterData()
'Sub loc loai trung theo cot [Code] - côt [B]'
Dim Dic As Object
Dim Rng As Range, i As Long, lRow As Long, ArrData(), Result(), iTmp As String, j As Long
Set Dic = CreateObject("Scripting.Dictionary")
'Gan doi tuong Dictionary vao bien Dic'
With Sheet1
'Xét sheet1'
    lRow = .Range("B" & Rows.Count).End(xlUp).Row
    'Tra ve dong cuoi cung co du lieu thuoc cot [B]'
    ArrData = .Range("B2:D" & lRow).Value2
    'Gan vung du lieu [B2:D & lRow] vao bien mang ArrData'
    lRow = UBound(ArrData, 1)
    'Tra ve kich thuoc chieu thu nhat cua mang ArrData'
    ReDim Result(1 To lRow, 1 To 4)
    'Khai bao cu the so chieu va kich thuoc chieu cho bien mang Result'
    For i = 1 To lRow
    'Xet vong lap bien i chay tu 1 toi lRow
        iTmp = ArrData(i, 1)
        'Gan phan tu (i,1) cua mang ArrData vao bien iTmp
        If iTmp <> "" Then
        'Xet iTmp, neu khac rong thi
            If Not Dic.Exists(iTmp) Then
            'Xet iTmp, neu chua ton tai trong Dic thi
                j = j + 1
                'Tang gia tri cua j len 1 don vi
                Dic.Add iTmp, j
                'Them item co gia tri = j ung voi key = iTmp
                'Truyen ket qua vao bien mang Result:
                Result(j, 1) = j
                Result(j, 2) = iTmp
                Result(j, 3) = ArrData(i, 2)
                Result(j, 4) = ArrData(i, 3)
            Else
            'Nguoc lai: iTmp da ton tai trong Dic thi
                Result(Dic.Item(iTmp), 4) = Result(Dic.Item(iTmp), 4) + ArrData(i, 3)
                'Cong don so luong vao phan tu cua mang Result co chi so (Dic.Item(iTmp), 4)
            End If
        End If
    Next i
    If j > 0 Then
    'Xet j >: Tuc la co ket qua loc
        .Range("H2").Resize(100, 4).ClearContents
        'Xoa du lieu trong vung gan ket qua
        .Range("H2").Resize(j, 4) = Result
        'Gan ket qua xuong bang tinh
    End If
End With
End Sub

Download file mẫu ví dụ nêu trên: Dictionary





Một số kinh nghiệm trong bảng tính Excel

Kinh nghiệm Excel

Một số kinh nghiệm trong bảng tính Excel

Trong Excel có nhất nhiều những thủ thuật hay mà chỉ những người đã từng làm mới phát hiện ra vì thế dưới đây https://lequocthai.com muốn giới thiệu với các bạn một số các kinh nghiệm trong Excel.



Chúng tôi sẽ liên tục cập nhật thêm những thủ thuật và kinh nghiệm để chia sẽ cho các bạn sử dụng Excel ngày một chuyên nghiệp hơn, tránh các lỗi lập đi lập lại.



1. Cách giấu số 0 trong Excel 



Tùy thuộc vào mục đích sử dụng, thói quen cũng như sở thích của mình,các bạn có thể sử dụng một trong các phương pháp sau đây để làm biến mất số 0 trong bảng Excel.



– Giấu tất cả số 0 trong bảng tính:



Nhấn vào menu Tools–>Options, chọn thẻ View. Xoá hộp kiểm Zero values.



Có phải tất cả các số 0 trên bàn tính sẽ biến mất? bạn đừng vội lo bởi chỉ có kết quả có giá trị là 0 thực sự mất thôi, còn những số 0 (ví dụ 10) tất nhiên là không sao rồi.



– Dùng dạng số để giấu các số 0, chúng ta thực hiện như sau:



+ Trong hộp Category, chọn Custom. Trong hộp Type, gõ 0;-0;;@.



– Dùng định dạng có điều kiện để giấu số 0 được trả về từ kết quả của công thức:



+ Chọn ô có số 0 cần giấu.



+ Nhấn menu Format–>Conditional Formatting. Ở hộp bên trái chọn Cell Value Is, hộp thứ hai tiếp theo chọn equal to, hộp kế tiếp gõ số 0.



+ Nhấn nút Format, chọn thẻ Font. Trong hộp Color, chọn màu trắng (hay trùng với màu nền của bảng tính). Bấm OK



– Dùng công thức để giấu số 0 hoặc thay bằng dấu gạch nối (-):



Giả sử tại ô A1, A2 bạn có các số tương ứng là 5, 5. Khi lấy A1-A2 thì kết quả sẽ là 0. Bạn có thể dùng các công thức sau để giấu số 0 hoặc thay bằng dấu gạch nối (-):



=IF(A1-A2=0,”-”,A1-A2)



2. Chèn nhiều dòng trong một ô (cell)



Mỗi lần nhấn Enter con trỏ nhảy một phát sang ô khác phía dưới. Làm thế nào để con trỏ nghe lời nằm yên trên ô đang nhập liệu đây? Thủ thuật hết sức đơn giản, bạn chỉ việc nhấn tổ hợp phím (Alt + Enter) thế là bạn có thể viết tiếp trong ô đang làm việc mà dòng lại được ngắt xuống dưới theo ý người dùng mong muốn.



3. Thêm màu, ảnh nền cho toàn bộ bảng tính



Để thêm màu hoặc ảnh nền cho bảng tính, bạn chọn Format –> Sheet –>Background. Tiếp đến, tìm tới ảnh nền (hoặc font màu) bạn thích và nhấn Open.



4. Đóng băng dòng tiêu đề



Trong mỗi bảng tính thường có dòng tiêu đề cố định vị trí cho từng cột . Nếu bạn nhập dữ liệu trong nhiều dòng và tràn quá màn hình, công việc nhập dữ liệu sẽ rất khó khăn vì dòng tiêu đề “trôi” mất. Để “đóng băng” dòng tiêu đề, nhấn chuột chọn một ô ngay dưới dòng tiêu đề; chọn Window > Freeze Panes. Giờ bạn có thể thoải mái nhập dữ liệu với thanh tiêu đề luôn hiển thị ở phía trên bảng tính…



Để thành thạo, sử dụng tốt và khai thác hết tính năng tuyệt vời của chương trình Excel chắc hẳn chúng ta cần phải sử dụng và làm thật nhiều trình soạn thảo này. Hi vọng, với những thao tác đơn giản này có thể giúp ích được cho các bạn trong công việc.

Sách Programming Excel with VBA Flavio Morgado pdf

VBA Excel / Download

Sách Programming Excel with VBA Flavio Morgado pdf

Learn to harness the power of Visual Basic for Applications (VBA) in Microsoft Excel to develop interesting, useful, and interactive Excel applications. This book will show you how to manipulate Excel with code, allowing you to unlock extra features, accuracy, and efficiency in working with your data. Programming Excel 2016 with VBA is a complete guide to Excel application development, using step-by-step guidance, example applications, and screenshots in Excel 2016.
In this book, you will learn:How to interact with key Excel objects, such as the application object, workbook object, and range object
Methods for working with ranges in detail using code
Usage of Excel as a database repository
How to exchange data between Excel applications
How to use the Windows API to expand the capabilities of Excel
A step-by-step method for producing your own custom Excel Ribbon Who This Book Is For: Developers and intermediate-to-advanced Excel users who want to dive deeper into the capabilities of Excel 2016 using code.




Download Sách Programming Excel with VBA pdf

Sách Excel 2007 VBA Programmer’s Reference pdf

VBA Excel / Download

Sách Excel 2007 VBA Programmer’s Reference pdf

This book is aimed squarely at Excel users who want to harness the power of the VBA language in their Excel applications. At all times, the VBA language is presented in the context of Excel, not just as a general application programming language.


The Primer has been written for those who are new to VBA programming and the Excel object model. It introduces the VBA language and the features of the language that are common to all VBA applications. It explains the relationship between collections, objects, properties, methods, and events and shows how to relate these concepts to Excel through its object model. It also shows how to use the Visual Basic Editor and its multitude of tools, including how to obtain help.


The middle section of the book takes the key objects in Excel and shows, through many practical examples, how to go about working with those objects. The techniques presented have been developed through the exchange of ideas of many talented Excel VBA programmers over many years and show the best way to gain access to workbooks, worksheets, charts, ranges, and so on. The emphasis is on efficiency—that is, how to write code that is readable and easy to maintain and that runs at maximum speed. In addition, the chapters devoted to accessing external databases detail techniques for accessing data in a range of formats.


The final four chapters of the book address the following advanced issues: linking Excel to the Internet, writing code for international compatibility, programming the Visual Basic Editor, and how to use the functions in the Win32 API (Windows 32-bit Application Programming Interface).




Download Excel 2007 VBA Programmer’s Reference

Cách dùng hàm SumProduct và Công thức mảng

Thủ thuật Excel

Cách dùng hàm SumProduct và Công thức mảng

Hàm SumProduct:
Cấu trúc SUMPRODUCT(array1,array2,array3, …)
Array – Mảng dữ liệu là một tập hợp dãy giá trị liên tiếp trong một khảng nào đó. VD A1:C1 hoặ A1:A10,…


Phép tính này cho phép chúng ta tính tổng của tích array1*array2*array3* …array30.
VD: A: Số lượng; B: Đơn giá
A1 =2 B1=20 C1=”Cam” D1=”Giống lai”
A2 =3 B2=10 C2=”Bưởi” D2=”Không”
A3 =4 B3=25 C3=”Cam” D3=”Không”



Bây giờ cần tính doanh thu của các loại hoa quả
array1=A1:A3
array2=B1:B3
Công thức =SumProduct(A1:A3, B1:B3) = 170
Bản chất công thức làm việc như thế này =A1*B1+A2*B2+A3*B3 kết quả là 170
Nhắc lại về phép tính logic:
Giá trị kiểu logic chỉ cho ra 1 trong 2 giá trị là TRUE/1, FALSE/0
Phép toán logic:<, >, <>, =, >=, <=, Not()
VD:
2>3=False
3>1=True
4>3=True
*) Logic và – AND
=(2>3)*(3>1)*(4>3)=False*True*True=0*1*1=False/0 tương đương với hàm AND(2>3,3>1,4>3). Ít nhất một logic=False thì kết quả sẽ là False hay 0.
* Logic hoặc – OR
=(2>3)+(3>1)+(4>3)=False+True+True=0+1=True/1 tương đương với hàm OR(2>3,3>1,4>3). Ít nhất một logic=True thì kết quả sẽ là True hay 1.
Lưu ý tổng của các giá trị là True=True=1).


*) Tính tổng có nhiều điều kiện:
Cách 1: dùng SUMPRODUCT
Tính tổng doanh thu của loại là “Cam”
=SUMPRODUCT(A1:A3,B1:B3*(C1:C3=”Cam”)) hoặc =SUMPRODUCT(A1:A3*B1:B3*(C1:C3=”Cam”)) = 140
Công thức tính như sau:
=A1*B1*(C1=”Cam”)+A2*B2*(C2=”Cam”)+A3*B3*(C3=”Cam”)
=2*20*True+3*10*False+4*25*True
=2*20*1+3*10*0+4*25*1= 140
Cách 2: dung Công thức mảng – “Formula Array”
=Sum(IF(C1:C3=”Cam”,A1:A3*B1:B3,0))
Kết thức nhẫn tổ hợp CTRL+SHIFT+ENTER. Với cách làm này EXCEL sẽ phân tích như sau:
Xét trên từng dòng trong mảng (array)
dòng1: (c1=”Cam”)=true nên lấy A1*B1=2*20
dòng2: (c2=”Cam”)=false nên lấy 0 (theo cách của lấy của hàm IF)
dòng3: (c3=”Cam”)=true nên lấy A3*B3=4*25
Sau khi chạy hết các dòng, EXCEL sẽ dùng hàm SUM để tính tổng kết quả tính được ở từng dòng=2*20+0+2*25=140. Nếu trong công thức là hàm khác hàm SUM thì cách tính sẽ theo hàm đó.


Như vậy có 2 cách tính:


=SUMPRODUCT(A1:A3*B1:B3*(C1:C3=”Cam”)) và
=Sum(IF(C1:C3=”Cam”,A1:A3*B1:B3,0))

*) Vậy tại sao không dùng là =SUM(A1:A3*B1:B3*(C1:C3=”Cam”))
mà phải dùng hàm =SUMPRODUCT(A1:A3*B1:B3*(C1:C3=”Cam”)) ?

Các bạn nhớ lại cấu trúc của SUM là
SUM(number1,number2, …)
Còn SUMPRODUCT là
SUMPRODUCT(array1,array2,array3, …)
number <> array


Nếu SUMPRODUCT(A1:A3*B1:B3*(C1:C3=”Cam”)) rồi ENTER là đúng vì đối số của nó phải là mảng – Array.


Nếu công thức =SUM(A1:A3*B1:B3*(C1:C3=”Cam”)) rồi ENTER kết quả là #VALUE! -lỗi vì A1:A3 là một array chứ không phải là một number.


Nếu nhấn tổ hợp CTRL+SHIFT+ENTER. Với cách làm này EXCEL sẽ phân tích như sau:
Xét trên từng dòng trong mảng (array)
dòng1: A1*B1*(c1=”Cam”)=2*20*True=2*20*1
dòng2: A2*B2*(c2=”Cam”)=3*10*False=3*10*0
dòng3: A3*B3*(c3=”Cam”)=2*25*True=4*25*1


Sau khi chạy hết các dòng, EXCEL sẽ dùng hàm SUM để tính tổng kết quả tính được ở từng dòng=2*20*1+3*10*0
+4*25*1=140.


Vậy vẫn dùng được =SUM(A1:A3*B1:B3*(C1:C3=”Cam”)) với điều kiện nhấn tổ hợp phím CTRL+SHIFT+ENTER


Như vậy đến đây chúng ta có có 3 cách tính:


=SUMPRODUCT(A1:A3*B1:B3*(C1:C3=”Cam”)) nhấn phím ENTER
=SUM(IF(C1:C3=”Cam”,A1:A3*B1:B3,0)) nhấn phím CTRL+SHIFT+ENTER
=SUM(A1:A3*B1:B3*(C1:C3=”Cam”)) nhấn phím CTRL+SHIFT+ENTER


Chúng có thể kết hợp rất nhiều điều kiện vào trong hàm thông qua phép toán logic nhân-và- And, cộng – hoặc – Or.


*) Dùng hàm SUMPRODUCT hay dùng SUM kết hợp CTRL+SHIFT+ENTER đều cho ra được kết quả như nhau chính là do phép toán logic của bạn.
*) Hàm SUMPRODUCT chỉ có thể tính tổng theo nhiều điều kiện
*) Công thức mảng – Formula Array ngoài việc tính tổng có nhiều điều kiện còn làm rất nhiều phép tính khác do cách sử dụng hàm mà thôi.




Theo Nguyễn Duy TuânGPE

Sách Excel 2013 Power Programming with VBA pdf

VBA Excel / Download

Sách Excel 2013 Power Programming with VBA pdf

The new Excel 2013 boasts updated features, enhanced power, and new capabilities. Naturally, that means John Walkenbach returns with a new edition of his bestselling VBA Programming book and covers all the methods and tools you need to know in order to program with Excel. With this comprehensive guide, “Mr. Spreadsheet” shows you how to maximize your Excel experience using professional spreadsheet application development tips from his own personal bookshelf.


Featuring a complete introduction to Visual Basic for Applications and fully updated for the latest features of Excel 2013, this essential reference includes an analysis of Excel application development and is packed with procedures, tips, and ideas for expanding Excel’s capabilities with VBA.


  • Offers an analysis of Excel application development and a complete introduction to VBA
  • Features invaluable advice from “Mr. Spreadsheet” himself, bestselling author John Walkenbach, who demonstrates all the techniques you need to create Excel applications, both large and small
  • Covers navigating the Excel interface, formatting worksheets, interacting with other Office applications, working with collaboration tools, and using sample workbooks and John Walkenbach’s award-winning Power Utility Pak to help enhance your Excel skills
  • Provides tips, tricks, and techniques for expanding Excel’s capabilities with VBA that you wont find anywhere else

Excel 2013 Power Programming with VBA is packed with procedures, tips, and ideas for achieving Excel excellence with VBA.


Loại sách có liên quan phiên bản mới hơn:


Sách Excel 2016 Power Programming with VBA pdf




Download Excel 2013 Power Programming with VBA

Microsoft Excel 2019 All in one for Dummies ( 8 books in one ) pdf

VBA Excel / Download

Microsoft Excel 2019 All in one for Dummies ( 8 books in one ) pdf

Pages: 984 – Year : 2019 – Size : 25 MB – English


Make Excel work for you 


Excel 2019 All-In-One For Dummies offers eight books in one!! It is completely updated to reflect the major changes Microsoft is making to Office with the 2019 release. From basic Excel functions, such as creating and editing worksheets, to sharing and reviewing worksheets, to editing macros with Visual Basic, it provides you with a broad scope of the most common Excel applications and functions—including formatting worksheets, setting up formulas, protecting worksheets, importing data, charting data, and performing statistical functions. 
   
The book covers importing data, building and editing worksheets, creating formulas, generating pivot tables, and performing financial functions, what-if scenarios, database functions, and Web queries. More advanced topics include worksheet sharing and auditing, performing error trapping, building and running macros, charting data, and using Excel in conjunction with Microsoft Power BI (Business Intelligence) to analyze, model, and visualize vast quantities of data from a variety of local and online sources.  


  • Get familiar with Worksheet design
  • Find out how to work with charts and graphics
  • Use Excel for data management, analysis, modeling, and visualization
  • Make sense of macros and VBA

If you’re a new or inexperienced user looking to spend more time on your projects than trying to figure out how to make Excel work for you, this all-encompassing book makes it easy!




Download: Microsoft EXCEL 2019 All in one for Dummies ( 8 books in one ) pdf

VBA Excel tách họ tên

Thủ thuật Excel

VBA Excel tách họ tên

Khi nhập liệu vào bảng tính Excel, thông thường ta nhập cả họ và tên vào cùng một ô. Tuy nhiên, có khi sau đó ta cần phải tách riêng tên ra khỏi họ và tên đệm, nếu làm thủ công bằng thao tác sao chép rồi dán qua ô khác thì sẽ rất bất tiện. Ngoài ra có những lúc bạn phải xắp xếp lại theo thứ tự A,B,C,…
Nếu sử dụng hàm Right kết hợp với một vài hàm khác thì cũng có thể cho ra kết quả như bạn muốn, nhưng trong một số trường hợp sẽ cho kết quả không chính xác. Có một phương pháp tối ưu hơn sẽ giúp bạn hoàn thành tốt công việc này, cách thực hiện cũng khá đơn giản như sau:
– Trên bảng tính chứa cột họ tên cần tách, bạn chọn menu Tools > Macro > Visual Basic Editor, lập tức xuất hiện chương trình Microsoft Visual Basic.
– Tiếp theo, bạn nhấn menu Insert và chọn Module sẽ xuất hiện một cửa sổ soạn thảo.


Bạn nhập đoạn mã lệnh sau vào cửa sổ soạn thảo:






Private Function Tachten(ten As String, lg As Integer)
Dim j As Integer
     Name = Trim(ten)
  For j = Len(Name) To 1 Step -1
    If Mid(Name, j, 1) = " " Then
       If lg = "1" Then
          Tachten = Right(Name, Len(Name) - j)
       Else
          Tachten = Left(Name, j)
       End If
  Exit For
    End If
  Next
End Function





– Bạn nhấn Ctrl+S để lưu lại và quay trở về bảng tính Excel.
– Bây giờ để tiến hành tách riêng họ và tên đệm vào một ô mới, bạn đặt con trỏ tại ô mới chứa họ và tên đệm rồi nhập vào công thức =TachTen(B3,0) và nhấn Enter sẽ thấy ngay kết quả.
– Để tách riêng tên vào một ô mới, bạn đặt con trỏ tại ô sẽ chứa tên cần tách và nhập vào công thức =TachTen(B3,1) rồi nhấn Enter là xong.
Ghi chú: B3 chính là địa chỉ của ô ban đầu chứa cả họ, tên đệm và tên.

Công thức đếm Excel ROWS, COUNTBLANK, COUNTA, COUNT, COUNTIF

Thủ thuật Excel

Công thức đếm Excel ROWS, COUNTBLANK, COUNTA, COUNT, COUNTIF

Ta có mảng dữ liệu A1:B10 có tên là Data. Mảng này sẽ có những ô trống, những ô chứa giá trị Text, số, những ô lỗi #N/A, #DIV/0, #NAME?, #NULL!, #VALUE!, #REF!. Ta lần lượt thực hiện các công thức đếm sau :


1/ Đếm tổng số ô :

Số ô có trong mảng dữ liệu Data A1:B10 là:

=ROWS(Data)*COLUMNS(Data)
2/Đếm các ô trống :

=COUNTBLANK(Data)

Hàm COUNTBLANK cũng đếm các ô chứa một công thức vốn trả về một chuỗi rỗng. TD : Công thức sau sẽ trả về một chuỗi rỗng nếu giá trị trong ô A1 lớn hơn 5. Nếu ô A1 đáp ứng điều kiện này, hàm COUNTBLANK sẽ đếm ô đó

=IF(A1>5,””,A1)

Bạn cũng có thể đếm số ô trống trong cột A bằng công thức sau :

=COUNTBLANK(A:A)

Và số ô trống trên tòan bộ Sheet1 :

=COUNTBLANK(Sheet1!1:65536)

Dĩ nhiên, bạn phải nhập công thức trên một Sheet khác ngọai trừ Sheet1, nếu không nó sẽ tạo ra tham chiếu vòng

Lưu ý : Hàm COUNTBLANK sẽ không đếm các ô chứa giá trị 0, ngay cả bạn hủy tùy chọn Zero Value trong Tools/Option
3/Đếm các ô không trống :

=COUNTA(Data)

Hàm COUNTA đếm các giá trị Text hoặc các giá trị Logic (TRUE hoặc FALSE). Nếu một ô chứa công thức trả kết quả về một chuỗi rỗng, hàm COUNTA cũng đếm luôn ô này
4/Đếm các ô số :

=COUNT(Data)

Các ô chứa giá trị logic (TRUE hay FALSE) không được xem là ô số. Hàm COUNT cũng đếm các ô chứa giá trị thời gian hay ngày tháng
5/Đếm các ô không phải Text :

{=SUM(IF(ISNONTEXT(Data),1))}
6/Đếm các ô Text :

{=SUM(IF(ISTEXT(Data),1))}
7/Đếm các giá trị Logic :

{=SUM(IF(ISLOGIC(Data),1))}

Nếu muốn biết các công thức mảng trên họat động ra sao, các bạn có thể tham khảo thêm ở bài “Mảng và công thức mảng”.
8/Đếm các giá trị lỗi trong một dãy :

Excel có 3 hàm để giúp bạn quyết định xem ô có chứa giá trị lỗi hay không :

– ISERROR : Trả về TRUE nếu ô chứa bất kỳ giá trị lỗi (#N/A, #VALUE, #REF!, #DIV/0!, #NUM!, #NAME?, hoặc #NULL!)

-ISERR : Trả về TRUE nếu ô chứa bất kỳ giá trị lỗi ngọai trừ #N/A

-ISNA : Trả về TRUE nếu ô chứa giá trị lỗi #N/A. Bạn có thể sử dụng các hàm này trong công thức mảng để đếm giá trị lỗi trong một dãy, tùy nhu cầu của bạn

{=SUM(IF(ISERROR(Data),1))}

{=SUM(IF(ISERR(Data),1))}

{=SUM(IF(ISNA(Data),1))}

Nếu bạn muốn đếm cụ thể các lỗi, bạn có thể sử dụng hàm COUNTIF

=COUNTIF(Data,”#DIV/0!”)

Trên đây là một số thí dụ về các công thức đếm cơ bản, lần sau, chúng ta sẽ phối hợp các hàm, các công thức mảng để thực hiện các công thức đếm và tính tổng nâng cao.

Back Next

Navigation