Chuyên mục xử lý, gỡ rối code VBA

Liên hệ QC
Status
Không mở trả lời sau này.

ndu96081631

Huyền thoại GPE
Thành viên BQT
Super Moderator
Tham gia
5/6/08
Bài viết
30,703
Được thích
53,930
Em sửa như ở trên liệu có dễ hiểu hơn không ạ
 
Upvote 0
Tôi không hiểu bạn muốn gì sao mà giúp. Bây giờ file cũng không có.
 
Upvote 0
Mình đang tìm kiếm code mẫu cách tính Nhập -xuất -Tôn ............... chung nhất nghiên cứu mà chưa thấy ... bạn nào thấy ở link nào chỉ dùm ... xin cảm ơn
 
Upvote 0
Tôi không hiểu bạn muốn gì sao mà giúp. Bây giờ file cũng không có.
Em xin lỗi anh huuthang_bd, em đã chỉnh sửa lại nội dung hỗ trợ và up lại file nhưng không hiểu sao không được, em up lại file mong anh giúp đỡ em ạ !

1. Vba loại bỏ các trường hợp trùng sau đó và bắt đầu ghi vào dòng thứ 3 cột K (như trong ví dụ sẽ là 1A - 1B - 1D - 1E - 2C - 2E vào các dòng liên tiếp của cột K)

2. Phần công thức:
Giá trị của cột A sẽ là những ký tự chẵn gồm 4 ký tự, 6 ký tự hoặc 8 ký tự. Trong quá trình tính toán vba sẽ tách nó ra làm từng giá trị = 2 ký tự một liền nhau liên tiếp

giá trị x1 : tương ứng ô ở cột A sẽ có 4 ký tự
giá trị x2: tương ứng ô ở cột A sẽ có 6 ký tự
giá trị x3: tương ứng ô ở cột A sẽ có 8 ký tự
giá trị x4: tương ứng ô ở cột A sẽ có 6 ký tự
giá trị x5: tương ứng ô ở cột A sẽ có 8 ký tự

Em muốn tính giá trị cột E bằng các điều kiện sau:

---- Nếu giá trị ô ở cột C= giá trị "x1" thì ta so sánh giá trị ô ở cột A ( như định nghĩa cột A tách ra làm 2 giá trị) với cột F (Cố định từ F2 - F10)
+ Nếu cả 2 nằm trong giá trị của cột F thì cho giá trị ô ở cột E = tương ứng ở cột B*2,
+ Phần còn lại thì cho giá trị ô ở cột E = tương ứng ở cột B*1 (tức là có ít nhất 1 giá trị không thuộc F)

----Nếu giá trị ô ở cột C = giá trị "x2" thì ta so sánh giá trị ô ở cột A ( như định nghĩa cột A tách ra làm 3 giá trị) với cột F (Cố định từ F2 - F10)
+ Nếu cả 3 nằm trong giá trị của cột F thì cho giá trị ô ở cột E = tương ứng ở cột B*3
+ Phần còn lại thì cho giá trị ô ở cột E = tương ứng ở cột B*1.( Tức là có ít nhất 1 giá trị không thuộc F).

---- Nếu giá trị ô ở cột C = giá trị "x3" thì ta so sánh giá trị ô ở cột A ( như định nghĩa cột A tách ra làm 4 giá trị) với cột F (Cố định từ F2 - F10)
+ Nếu cả 4 nằm trong giá trị của cột F thì cho giá trị ô ở cột E = tương ứng ở cột B*4
+ Phần còn lại thì cho giá trị ô ở cột E = tương ứng ở cột B*1.( Tức là có ít nhất 1 giá trị không thuộc F).

---- Nếu giá trị ô ở cột C = giá trị "x4" thì ta so sánh giá trị ô ở cột A ( như định nghĩa cột A tách ra làm 3 giá trị) với cột F (Cố định từ F2 - F10)
+ Nếu cả 3 nằm trong giá trị của cột F thì cho giá trị ô ở cột E = tương ứng ở cột B*6
+ Nếu 2 trong 3 giá trị đó nằm trong giá trị của cột F thì cho giá trị ô ở cột E = tương ứng ở cột B*2
+ Còn lại thì cho giá trị ô ở cột E = tương ứng ở cột B*1

---- Nếu giá trị ô ở cột C = giá trị "x5" thì ta so sánh giá trị ô ở cột A ( như định nghĩa cột A tách ra làm 4 giá trị) với cột F (Cố định từ F2 - F10)
+ Nếu cả 4 nằm trong giá trị của cột F thì cho giá trị ô ở cột E = tương ứng ở cột B*9
+ Nếu 3 trong 4 nằm trong giá trị của cột F thì cho giá trị ô ở cột E = tương ứng ở cột B*6
+ Nếu 2 trong 4 giá trị đó nằm trong giá trị của cột F thì cho giá trị ô ở cột E = tương ứng ở cột B*2
+ Còn lại thì cho giá trị ô ở cột E = tương ứng ở cột B*1
 

File đính kèm

  • Book1.xlsb
    13.3 KB · Đọc: 5
Upvote 0
Em xin lỗi anh huuthang_bd, em đã chỉnh sửa lại nội dung hỗ trợ và up lại file nhưng không hiểu sao không được, em up lại file mong anh giúp đỡ em ạ !

1. Vba loại bỏ các trường hợp trùng sau đó và bắt đầu ghi vào dòng thứ 3 cột K (như trong ví dụ sẽ là 1A - 1B - 1D - 1E - 2C - 2E vào các dòng liên tiếp của cột K)

2. Phần công thức:
Giá trị của cột A sẽ là những ký tự chẵn gồm 4 ký tự, 6 ký tự hoặc 8 ký tự. Trong quá trình tính toán vba sẽ tách nó ra làm từng giá trị = 2 ký tự một liền nhau liên tiếp

giá trị x1 : tương ứng ô ở cột A sẽ có 4 ký tự
giá trị x2: tương ứng ô ở cột A sẽ có 6 ký tự
giá trị x3: tương ứng ô ở cột A sẽ có 8 ký tự
giá trị x4: tương ứng ô ở cột A sẽ có 6 ký tự
giá trị x5: tương ứng ô ở cột A sẽ có 8 ký tự

Em muốn tính giá trị cột E bằng các điều kiện sau:

---- Nếu giá trị ô ở cột C= giá trị "x1" thì ta so sánh giá trị ô ở cột A ( như định nghĩa cột A tách ra làm 2 giá trị) với cột F (Cố định từ F2 - F10)
+ Nếu cả 2 nằm trong giá trị của cột F thì cho giá trị ô ở cột E = tương ứng ở cột B*2,
+ Phần còn lại thì cho giá trị ô ở cột E = tương ứng ở cột B*1 (tức là có ít nhất 1 giá trị không thuộc F)

----Nếu giá trị ô ở cột C = giá trị "x2" thì ta so sánh giá trị ô ở cột A ( như định nghĩa cột A tách ra làm 3 giá trị) với cột F (Cố định từ F2 - F10)
+ Nếu cả 3 nằm trong giá trị của cột F thì cho giá trị ô ở cột E = tương ứng ở cột B*3
+ Phần còn lại thì cho giá trị ô ở cột E = tương ứng ở cột B*1.( Tức là có ít nhất 1 giá trị không thuộc F).

---- Nếu giá trị ô ở cột C = giá trị "x3" thì ta so sánh giá trị ô ở cột A ( như định nghĩa cột A tách ra làm 4 giá trị) với cột F (Cố định từ F2 - F10)
+ Nếu cả 4 nằm trong giá trị của cột F thì cho giá trị ô ở cột E = tương ứng ở cột B*4
+ Phần còn lại thì cho giá trị ô ở cột E = tương ứng ở cột B*1.( Tức là có ít nhất 1 giá trị không thuộc F).

---- Nếu giá trị ô ở cột C = giá trị "x4" thì ta so sánh giá trị ô ở cột A ( như định nghĩa cột A tách ra làm 3 giá trị) với cột F (Cố định từ F2 - F10)
+ Nếu cả 3 nằm trong giá trị của cột F thì cho giá trị ô ở cột E = tương ứng ở cột B*6
+ Nếu 2 trong 3 giá trị đó nằm trong giá trị của cột F thì cho giá trị ô ở cột E = tương ứng ở cột B*2
+ Còn lại thì cho giá trị ô ở cột E = tương ứng ở cột B*1

---- Nếu giá trị ô ở cột C = giá trị "x5" thì ta so sánh giá trị ô ở cột A ( như định nghĩa cột A tách ra làm 4 giá trị) với cột F (Cố định từ F2 - F10)
+ Nếu cả 4 nằm trong giá trị của cột F thì cho giá trị ô ở cột E = tương ứng ở cột B*9
+ Nếu 3 trong 4 nằm trong giá trị của cột F thì cho giá trị ô ở cột E = tương ứng ở cột B*6
+ Nếu 2 trong 4 giá trị đó nằm trong giá trị của cột F thì cho giá trị ô ở cột E = tương ứng ở cột B*2
+ Còn lại thì cho giá trị ô ở cột E = tương ứng ở cột B*1
Công thức mảng cho ô E2
Mã:
=(SUM(LARGE(COUNTIF($F$2:$F$10,MID(A2,ROW($A$1:$A$4)*2-1,2)),ROW($A$1:$A$4))*IF(--RIGHT(D2)<4,{0;1;1;1},{0;1;4;3}))+1)*B2
Và code cho cột K
PHP:
Sub Button1_Click()
Dim Arr As Variant
Arr = UniqueAndSort(Range("C2:C" & Cells(&H100000, 3).End(xlUp).Row))
Range("K3").Resize(UBound(Arr, 1)).Value = Arr
End Sub
PHP:
Private Function UniqueAndSort(ByVal Rng As Variant) As Variant
Dim i As Long, j As Long, Dic As Object, Arr As Variant, ResultArr() As String, Pos As Long
Set Dic = CreateObject("Scripting.Dictionary")
If Rng.Count = 1 Then
    ReDim ResultArr(1 To 1, 1 To 1)
    ResultArr(1, 1) = Rng.Value
Else
    Arr = Rng.Value
    For i = 1 To UBound(Arr, 1)
        Dic.Item(Arr(i, 1)) = ""
    Next
    Arr = Dic.Keys
    ReDim ResultArr(1 To Dic.Count, 1 To 1)
    Dic.RemoveAll
    For i = LBound(Arr, 1) To UBound(Arr, 1)
        Pos = i
        For j = i + 1 To UBound(Arr, 1)
            If Arr(j) < Arr(Pos) Then Pos = j
        Next
        ResultArr(i + 1, 1) = Arr(Pos)
        Arr(Pos) = Arr(i)
    Next
End If
UniqueAndSort = ResultArr
End Function
 
Upvote 0
Công thức mảng cho ô E2
Mã:
=(SUM(LARGE(COUNTIF($F$2:$F$10,MID(A2,ROW($A$1:$A$4)*2-1,2)),ROW($A$1:$A$4))*IF(--RIGHT(D2)<4,{0;1;1;1},{0;1;4;3}))+1)*B2
Và code cho cột K
PHP:
Sub Button1_Click()
Dim Arr As Variant
Arr = UniqueAndSort(Range("C2:C" & Cells(&H100000, 3).End(xlUp).Row))
Range("K3").Resize(UBound(Arr, 1)).Value = Arr
End Sub
PHP:
Private Function UniqueAndSort(ByVal Rng As Variant) As Variant
Dim i As Long, j As Long, Dic As Object, Arr As Variant, ResultArr() As String, Pos As Long
Set Dic = CreateObject("Scripting.Dictionary")
If Rng.Count = 1 Then
    ReDim ResultArr(1 To 1, 1 To 1)
    ResultArr(1, 1) = Rng.Value
Else
    Arr = Rng.Value
    For i = 1 To UBound(Arr, 1)
        Dic.Item(Arr(i, 1)) = ""
    Next
    Arr = Dic.Keys
    ReDim ResultArr(1 To Dic.Count, 1 To 1)
    Dic.RemoveAll
    For i = LBound(Arr, 1) To UBound(Arr, 1)
        Pos = i
        For j = i + 1 To UBound(Arr, 1)
            If Arr(j) < Arr(Pos) Then Pos = j
        Next
        ResultArr(i + 1, 1) = Arr(Pos)
        Arr(Pos) = Arr(i)
    Next
End If
UniqueAndSort = ResultArr
End Function

Anh ơi có lẽ em giải thích anh lại hiểu sai ý em :D ý em là các ký tự ở ô ở cột A em sẽ phải tách ra làm 2 ký tự
ví dụ A2 sẽ là AA , BB và so sánh với giá trị cột F
A3 sẽ là BB,CC,DD
A4 sẽ là 1A,B3,D8,K9
từ đó dựa vào các điều kiện trong các ô tương ứng để tính ra giá trị trong các ô E2 , E3 , E4 ....
 
Upvote 0
Anh ơi có lẽ em giải thích anh lại hiểu sai ý em :D ý em là các ký tự ở ô ở cột A em sẽ phải tách ra làm 2 ký tự
ví dụ A2 sẽ là AA , BB và so sánh với giá trị cột F
A3 sẽ là BB,CC,DD
A4 sẽ là 1A,B3,D8,K9
từ đó dựa vào các điều kiện trong các ô tương ứng để tính ra giá trị trong các ô E2 , E3 , E4 ....
Thì tôi làm vậy. Sai chỗ nào? Chú ý đọc kỹ hướng dẫn của tôi, chỗ nào cần nhấn tôi cũng đã nhấn rồi.
 
Upvote 0
Anh ơi có lẽ em giải thích anh lại hiểu sai ý em :D ý em là các ký tự ở ô ở cột A em sẽ phải tách ra làm 2 ký tự
ví dụ A2 sẽ là AA , BB và so sánh với giá trị cột F
A3 sẽ là BB,CC,DD
A4 sẽ là 1A,B3,D8,K9
từ đó dựa vào các điều kiện trong các ô tương ứng để tính ra giá trị trong các ô E2 , E3 , E4 ....
Có sửa lại công thức một chút.
 

File đính kèm

  • Book1.xlsb
    18.8 KB · Đọc: 8
Upvote 0
Nhờ các thầy và các anh em giúp đỡ, CODE trong File Excel này vướng chỗ nào mà em chạy không được.

Option Explicit

Type LoaiVatTu
MaSo As String
Ten As String
DonVi As String
KhoiLuong As Double
End Type

Public Sub DanhSachVatTu()
Dim R As Range 'Pham vi trong BANG VAT LIEU can phan tich vat tu
Dim DanhSachVT() As LoaiVatTu ' Mang dong chua danh sach vat tu
Dim i As Long ' Chi so Mang dong
Dim k As Long ' Bien nay dung de duyet bang du lieu trong R

'chon vung du lieu can tinh TONG HOP VAT TU
Set R = Application.InputBox("Chon vung du lieu can tong hop vat tu", Type:=8)

i = 0 'chi so dau tien cua Mang vat tu la 0

Dim ii As Long
Dim ok As Boolean

'Doc du lieu tu sheet "Phan tich vat tu"
For Each k In R.Columns(1).Cells 'Chay qua tung o cua cot R

If Trim(k.Value) <> "" Then ' Trim la de cat bo nhung khoang trang trong tung o du lieu
If i = 0 Then ' vat tu dau tien trong danh sach
ReDim Preserve DanhSachVT(i) 'Gan du lieu cho vat tu dau tien
DanhSachVT(i).MaSo = Trim(k.Value)
DanhSachVT(i).Ten = Trim(k.Offset(0, 1).Value)
DanhSachVT(i).DonVi = Trim(k.Offset(0, 2).Value)
DanhSachVT(i).KhoiLuong = k.Offset(0, 3).Value
i = i + 1 ' tang chi so mang len 1
Else ' Neu danh sach vat tu lon hon 1
ok = True
For ii = 0 To i - 1
'vat tu nay da co trong danh sach
If DanhSachVT(ii).MaSo = Trim(k.Value) Then
ok = False
DanhSachVT(ii).KhoiLuong = DanhSachVT(ii).KhoiLuong + k.Offset(0, 3).Value
Exit For
End If
Next ii
'vat tu chua co ten trong danh sach
If ok Then

ReDim Preserve DanhSachVT(i) 'Gan du lieu cho vat tu dau tien
DanhSachVT(i).MaSo = Trim(k.Value)
DanhSachVT(i).Ten = Trim(k.Offset(0, 1).Value)
DanhSachVT(i).DonVi = Trim(k.Offset(0, 2).Value)
DanhSachVT(i).KhoiLuong = k.Offset(0, 3).Value
i = i + 1
End If
End If
End If
Next
'Ghi ket qua ra Excel, trong sheet "Tong hop vat tu"
Dim j As Long
Dim row As Long

row = 1 'Bat dau ghi du lieu tu dong so 1
For j = LBound(DanhSachVT) To UBound(DanhSachVT)
ThisWorkbook.Worksheets("Tong hop vat tu").Cells(row + j, 1).Value = j + 1
ThisWorkbook.Worksheets("Tong hop vat tu").Cells(row + j, 2).Value = DanhSachVT(j).MaSo
ThisWorkbook.Worksheets("Tong hop vat tu").Cells(row + j, 3).Value = DanhSachVT(j).Ten
ThisWorkbook.Worksheets("Tong hop vat tu").Cells(row + j, 4).Value = DanhSachVT(j).DonVi
ThisWorkbook.Worksheets("Tong hop vat tu").Cells(row + j, 5).Value = DanhSachVT(j).KhoiLuong
Next j
MsgBox "Ket thuc"

End Sub
 

File đính kèm

  • Phan Tich Vat Tu.xls
    60.5 KB · Đọc: 6
Upvote 0
Đây nữa, Sao em chạy thử mà không được gì cả. Rất mong được mọi người hướng dẫn thêm ạ
 

File đính kèm

  • 7. Tao Form nhap du lieu.xls
    42 KB · Đọc: 6
Upvote 0
Chào mấy anh/chị

Cho em hỏi mình có code nào để rút ngắn lệnh trên excel không ạ.
Ví dụ như hình bên dưới, em muốn nhấn 1 lệnh là nó ra beetween luôn khỏi phải đi từng bước.
upload_2017-9-22_3-18-29.png
 
Upvote 0
Chào mấy anh/chị

Cho em hỏi, em muốn lọc autofilter ngày tháng như bên dưới, nhưng khi viết thì lúc lọc nó không ra đúng. Anh, Chị nào biết giúp em đoạn code bên dưới với.
Em cảm ơn.

Sub Locngayxuat()
Dim dDate As Date
Dim lDate As Long
If IsDate(Range("$C$8:$Q$1001")) Then
dDate = Range("$C$8:$Q$1001")
lDate = DateSerial(Year(dDate), Month(dDate), Day(dDate))
End If
Range("I6").Select
NgayBD = ActiveCell.Value
Range("K6").Select
NgayKT = ActiveCell.Value
ActiveSheet.Range("$C$8:$Q$1001").AutoFilter Field:=2, Criteria1:=">=NgayBD" & lDate, Operator:=xlAnd, Criteria2:="<=NgayKT" & lDate
End Sub
 

File đính kèm

  • Book1.xlsm
    195.7 KB · Đọc: 3
Upvote 0
Vậy chắc là lúc nãy nó bị xung đột cái gì rồi . Bạn xem luôn dùm mình cái file Phân tích vật tư ở phía trên luôn cái. Nó bị lỗi gì mà tìm không ra
Cái Code cũ sửa lại như thế này thì chạy được :p
PHP:
Public Sub DanhSachVatTu()
    Dim R As Range 'Pham vi trong BANG VAT LIEU can phan tich vat tu
    Dim DanhSachVT() As LoaiVatTu  ' Mang dong chua danh sach vat tu
    Dim I As Long  ' Chi so Mang dong
    Dim K As Range  ' Bien nay dung de duyet bang du lieu trong R
    'chon vung du lieu can tinh TONG HOP VAT TU
    Set R = Application.InputBox("Chon vung du lieu can tong hop vat tu", Type:=8)
    I = 0 'chi so dau tien cua Mang vat tu la 0
    Dim ii As Long
    Dim ok As Boolean
    'Doc du lieu tu sheet "Phan tich vat tu"
    For Each K In R.Columns(1).Cells           'Chay qua tung o cua cot R
        If Trim(K.Value) <> "" Then   ' Trim la de cat bo nhung khoang trang trong tung o du lieu
            If I = 0 Then ' vat tu dau tien trong danh sach
                ReDim Preserve DanhSachVT(I) 'Gan du lieu cho vat tu dau tien
                DanhSachVT(I).MaSo = Trim(K.Value)
                DanhSachVT(I).Ten = Trim(K.Offset(0, 1).Value)
                DanhSachVT(I).DonVi = Trim(K.Offset(0, 2).Value)
                DanhSachVT(I).KhoiLuong = K.Offset(0, 3).Value
                I = I + 1      ' tang chi so mang len 1
                Else  ' Neu danh sach vat tu lon hon 1
                ok = True
                For ii = 0 To I - 1
                    'vat tu nay da co trong danh sach
                    If DanhSachVT(ii).MaSo = Trim(K.Value) Then
                        ok = False
                        DanhSachVT(ii).KhoiLuong = DanhSachVT(ii).KhoiLuong + K.Offset(0, 3).Value
                        Exit For
                    End If
                Next ii
                'vat tu chua co ten trong danh sach
                If ok Then
                    ReDim Preserve DanhSachVT(I) 'Gan du lieu cho vat tu dau tien
                    DanhSachVT(I).MaSo = Trim(K.Value)
                    DanhSachVT(I).Ten = Trim(K.Offset(0, 1).Value)
                    DanhSachVT(I).DonVi = Trim(K.Offset(0, 2).Value)
                    DanhSachVT(I).KhoiLuong = K.Offset(0, 3).Value
                    I = I + 1
                End If
            End If
        End If
    Next
    'Ghi ket qua ra Excel, trong sheet "Tong hop vat tu"
    Dim J As Long
    Dim row As Long
    row = 3 'Bat dau ghi du lieu tu dong so 1
    For J = LBound(DanhSachVT) To UBound(DanhSachVT)
        Sheet2.Cells(row + J, 1).Value = J + 1
        Sheet2.Cells(row + J, 2).Value = DanhSachVT(J).MaSo
        Sheet2.Cells(row + J, 3).Value = DanhSachVT(J).Ten
        Sheet2.Cells(row + J, 4).Value = DanhSachVT(J).DonVi
        Sheet2.Cells(row + J, 5).Value = DanhSachVT(J).KhoiLuong
    Next J
    MsgBox "Ket thuc"
End Sub

Em góp vui với cái Phân tích vật tư
 

File đính kèm

  • Phan Tich Vat Tu.xls
    73 KB · Đọc: 16
Lần chỉnh sửa cuối:
Upvote 0
Ôi hay quá Pacific ơi, qua chủ đề này giúp mình với
http://www.giaiphapexcel.com/diendan/threads/nhờ-giúp-em-viết-code-vba-tính-cột-thành-tiền-và-link-đơn-giá.129787/page-3
à mà bạn có thể cho mình hỏi thêm chỗ này được không?
Trong cái CODE Tổng hợp vật tư mà bạn góp vui thì nhờ bạn giải thích hộ với, mình còn non nớt quá ...:(
1/ Phần số 1:
[ php] Set Dic = CreateObject("Scripting.Dictionary")
With Sheets("Phan tich vat tu")
sArr = .Range(.[C6], .[C65536].End(xlUp)).Resize(, 4).Value
End With [/php ]

2/ Phần số 2:
ReDim dArr(1 To UBound(sArr, 1), 1 To 4)

3/ Phần số 3:
For I = 1 To UBound(sArr, 1)
If sArr(I, 1) <> Empty Then
Tem = sArr(I, 1)
If Not Dic.Exists(Tem) Then
K = K + 1
Dic.Add Tem, K
dArr(K, 1) = Tem: dArr(K, 2) = sArr(I, 2)
dArr(K, 3) = sArr(I, 3): dArr(K, 4) = sArr(I, 4)
Else
dArr(Dic.Item(Tem), 4) = dArr(Dic.Item(Tem), 4) + sArr(I, 4)
End If
End If
Next I
 
Lần chỉnh sửa cuối:
Upvote 0
Em cảm ơn anh lắm lắm, anh quá là pro luôn :D
Trường hợp của bạn thì đoán ý bạn khó hơn việc giải quyết vấn đề.
Ví dụ:
1. Vba loại bỏ các trường hợp trùng sau đó và bắt đầu ghi vào dòng thứ 3 cột K (như trong ví dụ sẽ là 1A - 1B - 1D - 1E - 2C - 2E vào các dòng liên tiếp của cột K)
Nói như thế này thì ai cũng hiểu: Lọc duy nhất cột C sau đó sắp xếp lại và ghi kết quả vào cột K, bắt đầu từ K3.
 
Upvote 0
Trường hợp của bạn thì đoán ý bạn khó hơn việc giải quyết vấn đề.
Ví dụ:

Nói như thế này thì ai cũng hiểu: Lọc duy nhất cột C sau đó sắp xếp lại và ghi kết quả vào cột K, bắt đầu từ K3.

Dạ, em dùng từ ngữ còn rối quá :( Em còn một mong muốn nữa, mong anh giải thích dùm em cái công thức của anh cho nó chọn vẹn ạ

=(SUM(LARGE(COUNTIF($F$2:$F$10,MID(A2,ROW($A$1:$A$4)*2-1,2)),ROW($A$1:$A$4))*IF(--RIGHT(D2)<4,(ROW($A$1:$A$4)=RIGHT(D2)+1)*RIGHT(D2),{0;1;4;3}))

Em chưa hiểu hết logic trong đó, nên mới thắc mắc tại sao lại lấy giá trị MID(A2,ROW($A$1:$A$4)*2-1,2 )hay các số đằng sau nó {0;1;4;3} và nếu thằng D nó ko phải các giá trị x1,x2,x3,x4,x5 mà là bút,vở,sách,bảng thì sẽ thế nào :)) sẽ phải if nó bằng luôn giá trị đó là đc hay phải viết 1 công thức mới. Em cảm ơn anh Thắng nhiều !
 
Upvote 0
Status
Không mở trả lời sau này.
Web KT
Back
Top Bottom