How to Use Excel VBA Select Case and Operator

Get FREE Advanced Excel Exercises with Solutions!

,In this article, we will discuss VBA codes with Select Case and related Operator(s). The Select Case statement is one of the control structures available in VBA. This statement is handy when you have multiple conditions to check against a single variable or expression. It provides a more concise and readable way to handle multiple conditions compared to using nested If…ElseIf…Else statements. It also offers some useful operators like the Colon operator, IS operator, etc. These allow users to handle multiple conditions more efficiently.


Excel VBA Select Case and Operator: A Detailed Overview

In this article, we will talk about VBA Select Case and Operator in detail. We will use the Select Case statement on the text and numerical values. Then, we will show the usage of the Colon and IS operators. We will incorporate the Select Case statement with Logical Operators as well. Nested Select Case will also be explored. We will also define a new function with the Select Case statement. Finally, we will use the Select Case statement in a MsgBox.


1. Select Case with Numerical Values

In this method, we will implement the Select Case statement on numerical values. In the first section, we will use this statement on a single number. Then, we will apply this to a range of numbers.


1.1 Select Case with Single Number

In this instance, we will use the Select Case statement on a single number. We will play a guessing game. At first, the code will generate a random number. Then, it will prompt users to guess a number. If the two number matches the user wins. Otherwise, the code asks users to try again. The code is as follows,

Sub Single_Number()
n = WorksheetFunction.RandBetween(1, 10)
user = Int(InputBox("Please Enter a number between 1 and 10"))
Select Case user
Case n
MsgBox "You have guessed right number"
Case Else
MsgBox "You have guessed the wrong number. The number generated by the computer was " & n
End Select
End Sub

VBA Code with Select Case on Single Number

VBA Breakdown

n = WorksheetFunction.RandBetween(1, 10)
  • The code accesses the default worksheet function RandBetween and generates any number between 1 and 10 randomly.
user = Int(InputBox("Please Enter a number between 1 and 10"))
  • The code prompts users to guess a number between 1 and 10.
Select Case user
Case n
MsgBox "You have guessed the right number"
  • Here, the Select Case statement begins.
  • Select Case user: this means the statement will compare the value of the “user” variable with the cases that follow.
  • Case n: It states if “user” is equal to “n”. Then, the MsgBox will output “You have guessed the right number” message.
Case Else
MsgBox "You have guessed the wrong number. The number generated by the computer was " & n
  • Case Else: The Case Else will be executed if the previous case or cases do not match. Here, if “user” is not equal to “n” then this portion of the code will be executed.
  • Finally, a MsgBox will show “You have guessed the wrong number. The number generated by the computer was ” & n. It will show the number generated by the computer as well.

As we execute the code by launching the VBA Macro editor, the code will display messages based on user input.


1.2 Select Case with Range of Numbers

Here, we will use the Select Case statement on a range of numbers. We have here a dataset that contains the marks of some students. Now, we will grade them with A, B, and the like of them based on their average marks.

Dataset to Use Select Case on Range of Numbers

We will use the following code to do so.

Sub Number_Range()
Dim ws As Worksheet
Dim Rng As Range
Set ws = ThisWorkbook.Worksheets("Number_Range")
Set Rng = ws.Range("F5:F12")
For i = 1 To Rng.Rows.Count
marks = Rng.Cells(i, 1)
Select Case marks
Case 80 To 100
Rng.Cells(i, 1).Offset(0, 1) = "A"
Case 70 To 80
Rng.Cells(i, 1).Offset(0, 1) = "B"
Case 60 To 70
Rng.Cells(i, 1).Offset(0, 1) = "C"
Case 50 To 60
Rng.Cells(i, 1).Offset(0, 1) = "D"
Case Else
Rng.Cells(i, 1).Offset(0, 1) = "Failed"
End Select
Next i
End Sub

VBA Code to Use Select Case on Range of Numbers

VBA Breakdown

Dim ws As Worksheet
Dim Rng As Range
Set ws = ThisWorkbook.Worksheets("Number_Range")
Set Rng = ws.Range("F5:F12")

Here, we declared two variables “ws” and “Rng” as Worksheet and Range datatype respectively.

Then, we assigned the “Number_Range” worksheet as the value for the “ws” variable and the F5:F12 range as the value for the “Rng” variable.

For i = 1 To Rng.Rows.Count

This line starts a loop that iterates from 1 to the number of rows in the “Rng” range. The loop variable “i” represents the current row number.

marks = Rng.Cells(i, 1)

This line assigns the value of the cell in the current row (i) and the first column (column 1) to the “marks” variable.

Select Case marks

This line starts the Select Case statement, which evaluates the value of the marks variable and adds grades to the “Grades” column according to different cases that will follow.

Case 80 To 100

If the value of the “marks” variable falls within the range of 80 to 100 (inclusive), the code will execute this case block. It assigns the value “A” to the cell in the same row but in the G column (offset by 0 rows and 1 column from the original cell). The code continues and executes different cases to assign different grades for different marks falling within a certain mark range.

Case Else

If the value of marks does not match any of the specified ranges, the code within this case block will execute. It assigns the value “Failed” to the corresponding cell in the second column.

As we execute the code, it will assign grades to students based on their average marks.

Using VBA Select Case and Operator on Range of Numbers

Read More: Excel VBA Select Case Between Two Values


2. Select Case with Texts

The Select Case statement can handle texts as well. In this section, we will see 2 instances where the statement will deal with texts.


2.1 Select Case with Exact Match

In the first example, we have a dataset of some groceries. We will use a VBA code with the Select Case statement to categorize these groceries.

Dataset to Exactly Match Texts with Select Case

We will use the code below to do the task.

Sub ExactText()
Dim ws As Worksheet
Dim Rng As Range
Set ws = ThisWorkbook.Worksheets("ExactText")
Set Rng = ws.Range("C5:C12")
For i = 1 To Rng.Rows.Count
Item = Rng.Cells(i, 1)
Select Case Item
Case "Apple", "Orange", "Mango"
Rng.Cells(i, 1).Offset(0, 1) = "Fruits"
Case "Tomato", "Cucumber", "Green peas"
Rng.Cells(i, 1).Offset(0, 1) = "Vegetables"
Case Else
Rng.Cells(i, 1).Offset(0, 1) = "Meat"
End Select
Next i
End Sub

VBA Code to Exactly Match Texts with Select Case

VBA Breakdown

Dim ws As Worksheet
Dim Rng As Range
Set ws = ThisWorkbook.Worksheets("ExactText")
Set Rng = ws.Range("C5:C12")
  • We run this code on the “ExactText” sheet as indicated by the Set ws = ThisWorkbook.Worksheets(“ExactText”)
  • We will set the C5:C12 range as the value for the “Rng” variable.
For i = 1 To Rng.Rows.Count
Item = Rng.Cells(i, 1)
  • We will run a For Loop through each row of the “Rng” range.
  • Then, we will assign the cell values in each iteration to the “Item” variable.
Select Case Item
Case "Apple", "Orange", "Mango"
Rng.Cells(i, 1).Offset(0, 1) = "Fruits"
Case "Tomato", "Cucumber", "Green peas"
Rng.Cells(i, 1).Offset(0, 1) = "Vegetables"
Case Else
Rng.Cells(i, 1).Offset(0, 1) = "Meat"
  • Select Case Item: This line starts the Select Case statement, which evaluates the value of the Item variable and performs different actions based on the specified cases.
  • Case “Apple”, “Orange”, “Mango”: If the value of Item matches any of the specified fruits (“Apple”, “Orange”, “Mango”), the code within this case block will execute. It assigns the value “Fruits” to the cell in the D column (offset by 0 rows and 1 column from the original cell).
  • Case “Tomato”, “Cucumber”, “Green peas”: If the value of “Item” matches any of the specified vegetables (“Tomato”, “Cucumber”, “Green peas”), the code within this case block will execute. It assigns the value “Vegetables” to the corresponding cell in the second column.
  • Case Else: If the value of “Item” does not match any of the specified cases, the code within this case block will execute. It assigns the value “Meat” to the corresponding cell in the second column.

As soon as we run the code, it will categorize items accordingly.

VBA Select Case with Exact Text Match

Read More: How to Use VBA Case Statement


2.2 Select Case with Like Operator

In this example, we will declare a UDF that contains the Like operator. The Like operator compares a string with a pattern and determines if they match. It allows you to perform pattern matching and wildcard searches within strings. In this case, we will use this operator with Select Case in VBA to find out whether the ID formats of some employees are correct or not.

Dataset to Use VBA Select Case and Like Operator

We will use the following code to do the job.

Sub LikeOperator()
Dim ws As Worksheet
Dim Rng As Range
Set ws = ThisWorkbook.Worksheets("LikeOperator")
Set Rng = ws.Range("D5:D12")
For i = 1 To Rng.Rows.Count
ID = Rng.Cells(i, 1)
Select Case True
Case ID Like "[A-Z]?##"
Rng.Cells(i, 1).Offset(0, 1) = "Right ID"
Case Else
Rng.Cells(i, 1).Offset(0, 1) = "Wrong ID"
End Select
Next i
End Sub

Code with to Use VBA Select Case and Like Operator

VBA Breakdown

For i = 1 To Rng.Rows.Count
ID = Rng.Cells(i, 1)
  • Here, we will run a For Loop through the D5:D12 range.
  • Then, we will assign the value of each cell at each iteration to the temporary variable “ID”.
Select Case True
Case ID Like "[A-Z]?##"
Rng.Cells(i, 1).Offset(0, 1) = "Right ID"
Case Else
Rng.Cells(i, 1).Offset(0, 1) = "Wrong ID"
End Select
  • Select Case True: This line starts the Select Case As the Like operator returns True if a value matches a pattern, the Select Case statement will evaluate if the value returned by the cases that follow is True or not.
  • Case ID Like “[A-Z]?##”: The Like operator looks for texts where an UpperCase letter is followed by any character and two numbers. The “?” sign means any one character and the “#” sign means any number.
  •  Cells(i, 1).Offset(0, 1) = “Right ID”: This line will write “Right ID” in the E column of the current row if the value in the D column of the same row matches the pattern.
  • The Case Else code will execute if the values in the “Rng” range do not match the “[A-Z]?##” pattern.

Select Case with Like Operator

Read More: Excel VBA Select Case Like


3. Select Case Colon Operator

In the previous sections, we have seen that the Select Case statement will have at least 3 lines of code. However, the Colon operator allows you to combine multiple statements on a single line, which can help make your code more compact and readable in certain situations. In this instance, we are going to use a VBA code with the Select Case statement and the Colon operator. We will use the following code,

Sub Colon_Operator()
Dim ws As Worksheet
Dim Rng As Range
Set ws = ThisWorkbook.Worksheets("Colon_Operator")
Set Rng = ws.Range("F5:F12")
For i = 1 To Rng.Rows.Count
marks = Rng.Cells(i, 1)
Select Case marks
Case 80 To 100: Rng.Cells(i, 1).Offset(0, 1) = "A"
Case 70 To 80: Rng.Cells(i, 1).Offset(0, 1) = "B"
Case 60 To 70: Rng.Cells(i, 1).Offset(0, 1) = "C"
Case 50 To 60: Rng.Cells(i, 1).Offset(0, 1) = "D"
Case Else: Rng.Cells(i, 1).Offset(0, 1) = "Failed"
End Select
Next i
End Sub

VBA Code with Select Case and Colon Operator

In this code too, we evaluate the grades of the students for different cases like the previous examples. However, in this case, we used the Colon operator to make the Select Case operator more concise and readable.

As soon as we run the code, it will print the grades of the students in the G column.

Select Case with Colon Operator


4. Select Case IS

Here, we will combine the IS operator  with the Select Case statement in VBA. The IS operator is typically used for object comparison or type checking. In this case, we will see with the IS operator if a mark is greater than a certain value. If it does, then the code will assign a grade to that student. Here is the code,

Sub CaseIS()
Dim ws As Worksheet
Dim Rng As Range
Set ws = ThisWorkbook.Worksheets("CaseIS")
Set Rng = ws.Range("F5:F12")
For i = 1 To Rng.Rows.Count
marks = Rng.Cells(i, 1)
Select Case marks
Case Is >= 80
Rng.Cells(i, 1).Offset(0, 1) = "A"
Case Is >= 70
Rng.Cells(i, 1).Offset(0, 1) = "B"
Case Is >= 60
Rng.Cells(i, 1).Offset(0, 1) = "C"
Case Is >= 50
Rng.Cells(i, 1).Offset(0, 1) = "D"
Case Else
Rng.Cells(i, 1).Offset(0, 1) = "Failed"
End Select
Next i
End Sub

VBA Code with Select Case IS

Like the previous examples, here too, we will evaluate the grades of some students. However, unlike the previous instances, here, we will use the IS operator to compare the cases and we will not use a range. Instead, we will see if a mark is greater than the value in a particular case. That is what the Case IS >=80 means.

As we execute the code from the Macros tab, Excel will evaluate the grades of the students and write them in the G column.

Select Case IS


5. Select Case with Logical Operators

In Visual Basic for Applications (VBA), there are several Logical operators that you can use to perform logical operations and make decisions in your code like And, Or, Not, etc. We will incorporate an operator with the Select Case statement in VBA. Here, we have a dataset of some applicants and we will select or reject an applicant based on his/hers subject of study and job experience.

Dataset to Use VBA Select Case and Logical Operator

We will use the following VBA code with the Select Case statement and Logical operators.

Sub Logical_Operator()
Dim ws As Worksheet
Dim Rng As Range
Set ws = ThisWorkbook.Worksheets("Logical_Operator")
Set Rng = ws.Range("C5:D12")
For i = 1 To Rng.Rows.Count
Subject = Rng.Cells(i, 1)
Experience = Rng.Cells(i, 2)
Select Case True
Case (Subject = "CSE") And (Experience > 2)
Rng.Cells(i, 1).Offset(0, 2) = "Selected"
Range(Rng.Cells(i, 1).Offset(0, -1), Rng.Cells(i, 1).Offset(0, 2)).Interior.Color = vbGreen
Case Else
Rng.Cells(i, 1).Offset(0, 2) = "Rejected"
End Select
Next i
End Sub

VBA Code with Select Case and Logical Operator

VBA Breakdown

Dim ws As Worksheet
Dim Rng As Range
Set ws = ThisWorkbook.Worksheets("Logical_Operator")
Set Rng = ws.Range("C5:D12")
  • The code sets the data type of the “ws” and “Rng” variables as Worksheet and Range responsibility.
  • It sets the “Logical_Operator” worksheet as the value of the “ws” variable and the C5:D12 range of that sheet as the value of the “Rng” variable.
For i = 1 To Rng.Rows.Count
Subject = Rng.Cells(i, 1)
Experience = Rng.Cells(i, 2)
  • The For Loop iterates through the rows of the “Rng” range.
  • It sets the value of the “Subject” column to the “Subject” variable and the value of the “Work Experience (Years)” column as the value of the “Experience” variable at each iteration.
Select Case True
Case (Subject = "CSE") And (Experience > 2)
Rng.Cells(i, 1).Offset(0, 2) = "Selected"
Range(Rng.Cells(i, 1).Offset(0, -1), Rng.Cells(i, 1).Offset(0, 2)).Interior.Color = vbGreen
Case Else
Rng.Cells(i, 1).Offset(0, 2) = "Rejected"
End Select
  • Select Case True: This starts the Select Case As logical operators return either True or False, the Select Case will compare if the return value from the cases to follow is true or not.
  • Case (Subject = “CSE”) And (Experience > 2): This case contains an And This sets a condition where the subject of an applicant being “CSE” and the work experience is greater than 2, both cases are True.
  • Cells(i, 1).Offset(0, 2) = “Selected”: This line assigns the value “Selected” to the cell located at row i, column 1 (offset by 2 columns) that is column E of the range “Rng”. This means it is updating a cell with the text “Selected”.
  • Range(Rng.Cells(i, 1).Offset(0, -1), Rng.Cells(i, 1).Offset(0, 2)).Interior.Color = vbGreen: This line sets the interior color of a range of cells. It selects a range starting from the cell at row i, one column left of the C column ( offset by -1 column), and ending at the cell at row i, column E (offset by 2 columns). TheColor property of this range is then set to vbGreen, which represents the color green.
  • Cells(i, 1).Offset(0, 2) = “Rejected”: The code under the Case Else property will execute if the subject “CSE” and “work experience greater than 2”  these cases both are false or either one of them is false. The code will simply write “Rejected” in the E cell which is 2 columns offset from the C column as indicated by the code.

As soon as we execute the code, the code will select and mark the applicants who are eligible.

Select Case with Logical Operator


6. Nested Select Case Statements

A Nested Select Case statement means a Select Case statement inside another. This helps to break a complicated code with multiple Select Case statements and make it more understandable. Here, we will look for eligible employees. We will use the following code to do so,

Sub NestedStatement()
Dim ws As Worksheet
Dim Rng As Range
Set ws = ThisWorkbook.Worksheets("NestedStatement")
Set Rng = ws.Range("C5:D12")
For i = 1 To Rng.Rows.Count
Subject = Rng.Cells(i, 1)
Experience = Rng.Cells(i, 2)
Select Case True
Case Subject = "CSE"
Select Case True
Case Experience > 2
Rng.Cells(i, 1).Offset(0, 2) = "Selected"
Range(Rng.Cells(i, 1).Offset(0, -1), Rng.Cells(i, 1).Offset(0, 2)).Interior.Color = vbGreen
Case Else
Rng.Cells(i, 1).Offset(0, 2) = "Rejected"
End Select
Case Else
Rng.Cells(i, 1).Offset(0, 2) = "Rejected"
End Select
Next i
End Sub

Code with Nested Select Case

In this code, the first Select Case statement verifies if the subject of the employee is “CSE” and if true then it enters into the next Select Case statement. In the nested Select Case statement the code will check if the experience of the applicants is greater than 2. If both cases are true then the code will write “Selected” in the E column of the corresponding row. It will also highlight the row. If any of the two or both of them are not true then the code will write “Rejected” in the E column.

As we execute the code, the code will identify the eligible applicants.

Nested Select Case Statements

Read More: How to Use Nested Select Case with VBA in Excel


7. Select Case Inside User-Defined Function

User-defined functions are special ones that users design to carry out specific tasks. These functions are comparable to the SUM function, COUNT function, and other built-in Excel functions. Here, we will use the Select Case statement in a user-defined function which will check if a string contains letters or not. Here, the ID column contains some alphanumeric and some numeric values. Our function will find out which IDs are alphanumeric.

Dataset to Use UDF

The UDF code is as follows,

Function CHECKLETTERS(Str As String) As Boolean
Dim i As Integer
For i = 1 To Len(Str)
Select Case Asc(Mid(Str, i, 1))
Case 65 To 90, 97 To 122
CHECKLETTERS = True
Exit For
Case Else
CHECKLETTERS = False
End Select
Next i
End Function

UDF with Select Case

VBA Breakdown

Function CHECKLETTERSASK(Str As String) As Boolean
  • In this line, we define the CHECKLETTERSASK function which will return a Boolean value.
  • The argument of the function will be a String type variable.
For i = 1 To Len(Str)
Select Case Asc(Mid(Str, i, 1))
Case 65 To 90, 97 To 122
CHECKLETTERS = True
Exit For
Case Else
CHECKLETTERS = False
End Select
  • For i = 1 To Len(Str): The For Loop will iterate from 1 to the number of letters that the string that we will pass into the function.
  • Select Case Asc(Mid(Str, i, 1)): It starts the Select Case The Mid function will extract each character from the Str” argument at each iteration of the For Loop. The Asc function will get the ASCII code for that character and store it in the “letter” variable.
  • Case 65 To 90, 97 To 122: The first case will evaluate if the ASCII value of each letter at each iteration is between 65 to 90 or 97 to 122. If it falls within those values then the function will return True. And it will exit the loop.
  •   Case Else: This code under this case will execute if the values are not within those ranges.

  • Now, we write the UDF function in the E5 cell by passing in the value in the D5 cell as its argument.
  • The function will return True as the argument contains a letter.

Typing UDF in Cells

  • Finally, drag down the cursor to autofill the rest of the cells of the “Check Letters” column.
  • The function will give either True or False accordingly.

Autofilling Entire Column with UDF


8. Select Case in MsgBox

In Visual Basic for Applications (VBA), the MsgBox function is used to display a message box or a dialog box to the user. It is a useful tool for providing information, displaying warnings, or prompting user input within VBA macros or applications. Here, we will incorporate the Select Case statement within a code that contains a MsgBox. We have a dataset of some students. We will prompt the users by using a MsgBox if they want to hide the rows containing the grades of the students who have failed. The Select Case portion of the code will execute according to the user response.

Dataset to Use Select Case in MsgBox

Here is the code that we will use to do the task.

Sub SelectCaseMsgBox()
Dim ws As Worksheet
Dim Rng As Range
Set ws = ThisWorkbook.Worksheets("SelectCaseMsgBox")
Set Rng = ws.Range("B5:G12")
user = MsgBox("Do you want to hide the info of the students who have failed?", vbYesNo)
For i = 1 To Rng.Rows.Count
Select Case user
Case vbYes
If Rng.Cells(i, Rng.Columns.Count) = "Failed" Then
Range(Rng.Cells(i, 1), Rng.Cells(i, Rng.Columns.Count)).EntireRow.Hidden = True
End If
Case vbNo
If Range(Rng.Cells(i, 1), Rng.Cells(i, Rng.Columns.Count)).EntireRow.Hidden = True Then
Range(Rng.Cells(i, 1), Rng.Cells(i, Rng.Columns.Count)).EntireRow.Hidden  = False
End If
End Select
Next i
End Sub

VBA Code to Use Select Case in MsgBox

VBA Breakdown

user = MsgBox("Do you want to hide the info of the students who have failed?", vbYesNo)
  • This line asks users if they want to hide the rows that contain the information of the students who have failed. The vbYesNo part indicates that there will be two options in MsgBox, Yes and No. Then, the line will store the reply of the user in the “user” variable.
For i = 1 To Rng.Rows.Count
  • The For Loop will iterate through each row of the B5:G12 range.
Select Case user
  • This marks the start of the Select Case This line compares the users’ reply ( Yes or No) with the subsequent cases.
Case vbYes
  • If the user replies Yes. then the code under this case will execute.
If Rng.Cells(i, Rng.Columns.Count) = "Failed" Then
Range(Rng.Cells(i, 1), Rng.Cells(i, Rng.Columns.Count)).EntireRow.Hidden = True
End If
  • The code checks if the value in the last column (column G) of each row in the range “Rng” is “Failed”. If it is, it hides the entire row by setting the Hidden property to True.
Case vbNo
  • If the user’s reply is No, then the block of code under this case will execute.
If Range(Rng.Cells(i, 1), Rng.Cells(i, Rng.Columns.Count)).EntireRow.Hidden = True Then
Range(Rng.Cells(i, 1), Rng.Cells(i, Rng.Columns.Count)).EntireRow.Hidden  = False
  • The code checks if a row is currently hidden. If it is, it unhides the row by setting the Hidden property to False.

  • Now, run the code from the Macros tab.
  • As we run the code, a MsgBox will give us two options to choose (Yes/No) from.
  • Click on Yes and the rows will be hidden.

Frequently Asked Questions

What is the difference between VBA Select Case and If Operator?

In VBA, both the Select Case statement and the If statement are used for conditional branching, but they have some differences in their usage and syntax.

  • The Select Case statement is useful when you have multiple possible conditions to evaluate against a single expression. It provides a more concise and structured way to handle multiple conditions.
  • On the other hand, the If statement is more suitable for handling single conditions or situations where the conditions are more complex and cannot be easily represented by a series of discrete values.

Download Practice Workbook

You can download the practice book here.


Conclusion

In this article, we have done an exhaustive discussion on the VBA Select Case statement and relevant operator. This will allow users to have a clear idea about the Select Case statement. This will also help them to implement the operator according to their needs. It will also provide them with an alternative to the If statement. They will be able to control their conditions in the code in a more structured way. Also, if you want to see more Excel content like this, visit our website, and unlock a great resource for Excel-related content.


Related Articles

What is ExcelDemy?

ExcelDemy - Learn Excel & Get Excel Solutions Center provides online Excel training , Excel consultancy services , free Excel tutorials, free support , and free Excel Templates for Excel professionals and businesses. Feel free to contact us with your Excel problems.
Adnan Masruf
Adnan Masruf

Adnan Masruf, holding a BSc in Naval Architecture & Engineering from Bangladesh University of Engineering and Technology, plays a pivotal role as an Excel & VBA Content Developer at ExcelDemy. His deep passion for research and innovation seamlessly aligns with his dedication to Excel. In this capacity, Masruf not only skillfully addresses challenging issues but also exhibits enthusiasm and expertise in gracefully navigating intricate situations, underscoring his steadfast commitment to consistently delivering exceptional content. His interests... Read Full Bio

We will be happy to hear your thoughts

Leave a reply

Advanced Excel Exercises with Solutions PDF

 

 

ExcelDemy
Logo