- Hôm Nay là ngày 10/02/2017 là một ngày rất buồn và cũng rất vui với mình ( vì có buồn xong hết buồn thì lại vui). Mình xin chia sẽ một thủ thuật mà mình cũng không biết nên đặt tiêu đề là gì để các bạn hiểu được nội dung.
- Chúng ta vào bài tập nhé, đầu tiên các bạn hãy nhìn vào hình bên dưới nhé:
- Nói qua về yêu cầu bài toán : cột E là dữ liệu chúng ta cần tính toán, giả sử ta nhập số 6 ở cột E thì nó sẽ nằm trong khung 2, ta xét tiếp cột B, C tức là KQ1 và KQ2, nếu ô nào chứ dữ liệu thì sẽ lấy ô đó ở ví dụ này là 9% và chúng ta được kết quả là 9%*6=0,54, thường thì chúng ta sẽ làm bài này với hàm IF, tuy nhiên với điều kiện nhiều thế này thì làm hàm IF có lẽ rất mệt mỏi nên ở đây mình sẽ viết hàm tự tạo để giải quyết bài toán này:
- Các bạn vào trình soạn thảo VBA insert module mới sau đó dán 2 hàm sau đây vào:
Public Function Xuly(rngCritaria As Range) As String
Dim arrtmp(), strtmp As String
arrtmp = rngCritaria
For i = 1 To UBound(arrtmp)
arrtmp(i, 1) = Replace(arrtmp(i, 1), " ", "")
For j = 1 To Len(arrtmp(i, 1))
If Not IsNumeric(Mid(arrtmp(i, 1), j, 1)) Then
arrtmp(i, 1) = WorksheetFunction.Replace(arrtmp(i, 1), j, 1, " ")
End If
Next j
Xuly = Xuly & " " & Trim(arrtmp(i, 1))
Next i
Xuly = WorksheetFunction.Trim(Xuly)
End Function
Function TinhDK(ByVal Qn As Double, ByVal rng As Range) As Double
Dim strDK As String
Dim arrDK() As String, arrKQ()
Dim k As Integer
arrKQ = rng.Value
strDK = Xuly(rng.Resize(rng.Rows.Count, 1))
arrDK = Split(strDK, " ")
For i = LBound(arrDK) To UBound(arrDK) - 2 Step 2
k = k + 1
If arrDK(i) < Qn And arrDK(i + 1) >= Qn Then
If arrKQ(k, 2) = "-" Then
If arrKQ(k, 3) = "-" Then
TinhDK = 0
Else
TinhDK = arrKQ(k, 3)
End If
Else
TinhDK = arrKQ(k, 2) * Qn / 100
End If
Exit Function
End If
Next i
If arrKQ(k + 1, 2) = "-" Then
TinhDK = arrKQ(k + 1, 3)
Else
TinhDK = arrKQ(k + 1, 2) * Qn / 100
End If
End Function
- Cuối cùng các bạn điền công thức vào ô F2 như sau: =TinhDK(E2;$A$2:$C$11) và kéo xuống các ô bên dưới và xem xét kết quả, chúc các bạn thành công.
- Link Download File: DOWNLOAD
- Xem hướng dẫn chi tiết bằng Video:
Sao mình không tải file này về máy được vậy bạn ơi
Trả lờiXóaĐăng nhận xét