Chuyên đề giải đáp các bài tập Excel (Phần 3)

Liên hệ QC
Status
Không mở trả lời sau này.
Mình có 1 thắc mắc là làm sao để phân biệt đc khi nào dùng SUMPRODUCT, khi nào dùng SUMIFS, và khi nào dùng {SUM(IF(...))}. Mình đang bị lẫn lộn giữa 3 cái này. Và trong SUMPRODUCT ( điều kiện khi nào dùng * và khi nào dùng + giữa các mảng). Ai biết giúp giùm mình cám ơn nhiều :). Dưới đây là vd mẫu mình đã làm nhưng mình vẫn chưa hiểu rõ về công dụng của các hàm này @$@!^%
 

File đính kèm

  • vídụ mẫu.xls
    36.5 KB · Đọc: 4
Lần chỉnh sửa cuối:
Mình có 1 thắc mắc là làm sao để phân biệt đc khi nào dùng SUMPRODUCT, khi nào dùng SUMIFS, và khi nào dùng {SUM(IF(...))}. Mình đang bị lẫn lộn giữa 3 cái này. Và trong SUMPRODUCT ( điều kiện khi nào dùng * và khi nào dùng + giữa các mảng). Ai biết giúp giùm mình cám ơn nhiều :). Dưới đây là vd mẫu mình đã làm nhưng mình vẫn chưa hiểu rõ về công dụng của các hàm này @$@!^%
Về cơ bản 3 cách tính tổng này đều dùng để tính tổng nhiều điều kiện, song bạn có thể chú ý một vài điểm sau

1/ Hàm Sumifs là hàm thông thường chỉ có từ Ex2007 trở lên
2/ Tốc độ tính Sumifs sẽ nhanh hơn 2 hàm còn lại
3/ Chỉ khi nào cần kết quả trả về mảng hoặc Sumifs không tính được (Ví dụ như tính tổng các mặt hàng trong tháng 12) mới nghĩ đến Sumproduct hoặc {Sum(If(...))}.

Nếu bạn mới tìm hiểu Excel thì tốt nhất hãy ưu tiên Sumifs, sau đó hãy tìm hiểu các cái còn lại.
 
sory bạn mình gửi nhầm file, là file này mơi đúng nè bạn xem giúp mình nhé

tuy nhiên công thức của bạn cho file củ cũng chưa đúng

Bài toán nối chuỗi nhiều dk này chắc phải dùng VBA thôi bạn ạ. Công thức chắc là chịu.
 
Dùng hàm JoinText của sư phụ NDU lắp vào file của bạn thôi. Bạn xem file đính kèm nhé.
Bài này nếu dùng code thì mình dùng Do Loop sẽ có đáp án thôi. Nhìn cách ghép công thức mà đáng nể thật. Mình chịu thua với mấy cái công thức rồi.
 
Bài này nếu dùng code thì mình dùng Do Loop sẽ có đáp án thôi. Nhìn cách ghép công thức mà đáng nể thật. Mình chịu thua với mấy cái công thức rồi.

Thế anh thử dùng Do loop đi để các hậu bối như em được học hỏi chút :D.
 
Lần chỉnh sửa cuối:
giá trị lớn nhất bằng vba

các anh chị ơi em có bài này tìm giá trị lớn nhất thỏa mản các điều kiện, nhưng viết bằng công thức thì file chạy chậm quá vì là công thức mảng,
vậy có thể cho e xin code lập trình bằng VBA hoặc code nào cũng được để xử lý vấn đề này nhé
cám ơn
 

File đính kèm

  • GIÁ TRI LON NHAT.xlsx
    11.6 KB · Đọc: 12
Thế anh thử dùng Do loop đi để các hậu bối như em được học hỏi chút :D.
Muốn Do thì Do thôi chứ ngán gì. Nhưng mà hỏng biết có trúng không vì dữ liệu có tẹo
PHP:
Sub NoiChuoi()
Dim sarr(), I
sarr = Range([C4], [C65536].End(3)(2)).Resize(, 3).Value
Do
   Do
   I = I + 1
   If Left(sarr(I, 2), 1) = "A" Then
      If Left(sarr(I + 1, 2), 1) = "A" Then
         If sarr(I, 1) = sarr(I + 1, 1) Then
            sarr(I + 1, 3) = sarr(I, 2) & sarr(I + 1, 2)
            I = I + 1
         Else
            sarr(I, 3) = sarr(I, 2)
         End If
      Else
         sarr(I, 3) = sarr(I, 2)
      End If
   End If
   Loop Until I = UBound(sarr())
Loop Until I = UBound(sarr())
[C4].Resize(I - 1, 3) = sarr
End Sub
 
Muốn Do thì Do thôi chứ ngán gì. Nhưng mà hỏng biết có trúng không vì dữ liệu có tẹo
PHP:
Sub NoiChuoi()
Dim sarr(), I
sarr = Range([C4], [C65536].End(3)(2)).Resize(, 3).Value
Do
   Do
   I = I + 1
   If Left(sarr(I, 2), 1) = "A" Then
      If Left(sarr(I + 1, 2), 1) = "A" Then
         If sarr(I, 1) = sarr(I + 1, 1) Then
            sarr(I + 1, 3) = sarr(I, 2) & sarr(I + 1, 2)
            I = I + 1
         Else
            sarr(I, 3) = sarr(I, 2)
         End If
      Else
         sarr(I, 3) = sarr(I, 2)
      End If
   End If
   Loop Until I = UBound(sarr())
Loop Until I = UBound(sarr())
[C4].Resize(I - 1, 3) = sarr
End Sub
làm luôn bài giá trị lớn nhất luôn anh hải ơi
 
Muốn Do thì Do thôi chứ ngán gì. Nhưng mà hỏng biết có trúng không vì dữ liệu có tẹo
PHP:
Sub NoiChuoi()
Dim sarr(), I
sarr = Range([C4], [C65536].End(3)(2)).Resize(, 3).Value
Do
   Do
   I = I + 1
   If Left(sarr(I, 2), 1) = "A" Then
      If Left(sarr(I + 1, 2), 1) = "A" Then
         If sarr(I, 1) = sarr(I + 1, 1) Then
            sarr(I + 1, 3) = sarr(I, 2) & sarr(I + 1, 2)
            I = I + 1
         Else
            sarr(I, 3) = sarr(I, 2)
         End If
      Else
         sarr(I, 3) = sarr(I, 2)
      End If
   End If
   Loop Until I = UBound(sarr())
Loop Until I = UBound(sarr())
[C4].Resize(I - 1, 3) = sarr
End Sub

Anh Hải ơi,

Cho em hỏi chút:

Mã:
sarr = Range([C4], [C65536].[B][COLOR=#ff0000]End(3)(2)[/COLOR][/B]).Resize(, 3).Value

Cái đoạn màu đỏ nó có ý nghĩa như thế nào vậy ạ ? Cách viết này mới quá em chưa từng va vào.

Cảm ơn anh.
 
Anh Hải ơi,

Cho em hỏi chút:

Mã:
sarr = Range([C4], [C65536].[B][COLOR=#ff0000]End(3)(2)[/COLOR][/B]).Resize(, 3).Value


Cái đoạn màu đỏ nó có ý nghĩa như thế nào vậy ạ ? Cách viết này mới quá em chưa từng va vào.

Cảm ơn anh.
Tương đương End(3) tương đương End(xlUp), (2) tương đương Offset(2) mà tui nên khuyên bạn nên viết đầy đủ để tránh những trường hợp không theo ý muốn
 
Lần chỉnh sửa cuối:
Các anh chị có thể chỉ cách viết ct tính xăng đi q1,2,3 là 10.000, còn q.4,5,6 là 20.000 thì viết như thế nào không ạ?
 
các anh chị ơi em có bài này tìm giá trị lớn nhất thỏa mản các điều kiện, nhưng viết bằng công thức thì file chạy chậm quá vì là công thức mảng,
vậy có thể cho e xin code lập trình bằng VBA hoặc code nào cũng được để xử lý vấn đề này nhé
cám ơn
có ai giúp em bài này với
 
Status
Không mở trả lời sau này.
Web KT

Bài viết mới nhất

Back
Top Bottom