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

Liên hệ QC
Status
Không mở trả lời sau này.
Xin nhờ các anh chị giúp Hàm Vlookup trong shet IN bị lỗi với
 

File đính kèm

  • Hoa don ban le.xls
    95.5 KB · Đọc: 13
bạn ơi cám ơn bạn đã viết công thức giúp mình, nhưng yêu cầu của mình không phải như đáp án của bạn,
mình cần liệt kê 10 "tên hàng" bao gồm số lượng và "số tiền" của 10 tên hàng đó
trong đó cột số tiền được sắp xếp theo thứ tự từ lớn đến nhỏ, vi du: 700,500,300.... và nếu như không có đủ 10 tên hàng thì các dòng còn lại là trống, hoặc số 0,mà công thức của bạn viết mình thấy thừa ra luôn là 11 tên hàng chư không phải 10 , Ơ BÀI GIẢ CỦA BẠN MÌNH ĐÃ ĐỔI SMALL THÀNH LARGE THÌ ĐÃ THEO ĐÚNG Ý CỦA MÌNH, NHƯNG MÌNH CẦN 10 "tên hàng" thôi và nếu không có đủ thì các dòng còn lại là "" hoăc 0
bạn giup mình nhé
cám ơn bạn nhìu
+1) Thật là không hiểu ý bạn. Với dữ liệu Nsu - 1.2012 sau khi trích lọc tôi thấy có 11 tên hàng đúng như công thức => vậy 10 tên hàng là như thế nào? Nếu thích 10 thì chỉ cho 10 dong công thức là xong lúc đó sai là cái chắc
+2) Để bắt lỗi công thức bạn cho đoạn sau vào đầu tất cả công thức (chú ý kết thúc Ctrl + Shift + Enter)
Mã:
=IF(COUNT(Tien)<ROW(1:1),"",
 
Xin nhờ các anh chị giúp Hàm Vlookup trong shet IN bị lỗi với
Bạn nhấn Ctrl+F3, xem lại name LuuData sẽ thấy bảng này chỉ có 40 cột (dựa vào tham số cuối của hàm OFFSET). Trong khi đó, công thức tại các hàng 15 và 16 (ở các ô bị lỗi #REF), tham số thứ 3 của VLOOKUP lại là các số lớn hơn 40. Chính vì vậy mới xuất hiện lỗi #REF. Cách khắc phục: Thay đổi số 40 trong name LuuData.
Còn tại ô D15, vấn đề là ở tham số thứ 2 của VLOOKUP. Bạn sửa lại cho phù hợp là được.
 
Bạn nhấn Ctrl+F3, xem lại name LuuData sẽ thấy bảng này chỉ có 40 cột (dựa vào tham số cuối của hàm OFFSET). Trong khi đó, công thức tại các hàng 15 và 16 (ở các ô bị lỗi #REF), tham số thứ 3 của VLOOKUP lại là các số lớn hơn 40. Chính vì vậy mới xuất hiện lỗi #REF. Cách khắc phục: Thay đổi số 40 trong name LuuData.
Còn tại ô D15, vấn đề là ở tham số thứ 2 của VLOOKUP. Bạn sửa lại cho phù hợp là được.

Cảm ơn nghiaphuc nhiều nhé mình không biết nhiều về exel nên cứ loay hoay
Mình sửa được rồi cảm ơn nhiều
 
lấy 10 gia trị từ nhỏ đến lớn

Đúng ra bài này dùng PivotTable để tổng hợp là nhanh gọn nhất. Có thể lấy ra top 10 và sort tùy ý
Tuy nhiên phải hỏi lại: 1 tên hàng nhưng có nhiều số lượng, nhiều số tiền thì có cộng dồn lại không? (mà lý nào lại không cộng dồn nhỉ?)
e đã sửa lại đề bài, có gì a xem lại giúp em nhé.
cái em cần là khi em chọn vào tháng bất kì 01,02,03,04 thì liệt kê 10 tên hàng có so tiền lớn nhất giảm dần vi du: 4000,2000,3000....
cám ơn anh nhìu.
 

File đính kèm

  • FILE LAM LAI DE BAI.xls
    41 KB · Đọc: 12
+1) Thật là không hiểu ý bạn. Với dữ liệu Nsu - 1.2012 sau khi trích lọc tôi thấy có 11 tên hàng đúng như công thức => vậy 10 tên hàng là như thế nào? Nếu thích 10 thì chỉ cho 10 dong công thức là xong lúc đó sai là cái chắc
+2) Để bắt lỗi công thức bạn cho đoạn sau vào đầu tất cả công thức (chú ý kết thúc Ctrl + Shift + Enter)
Mã:
=IF(COUNT(Tien)<ROW(1:1),"",
cám ơn bạn đã chỉ ra cái sai cho mình, bạn đã nói đúng nếu số tiền trùng nhau thì nếu lọc đến 10 tên hàng thì tên thứ 11 cũng có số tiền giống tên hàng thứ 10 thì biết lấy cái nào , cái này để mình xem lại bạn nhé .
chân thành cám ơn bạn "dhn"
 
lấy giá trị lớn nhất thoả mản điều kiện

e cần công thức để trích lọc dữ liệu , khi em chọn tháng bất kì từ 01-04 thì sẽ liệt kê ra 10 tên hàng có gia trị lớn nhất. nếu viết công thức không được thì cho em xin code VBA nhé
cám ơn anh, chị nhiều
 

File đính kèm

  • loc du lieu.xls
    40.5 KB · Đọc: 13
e cần công thức để trích lọc dữ liệu , khi em chọn tháng bất kì từ 01-04 thì sẽ liệt kê ra 10 tên hàng có gia trị lớn nhất. nếu viết công thức không được thì cho em xin code VBA nhé
cám ơn anh, chị nhiều

vba chưa làm được, từ từ ngâm dấm sau.
xem công thức trước

bạn sửa lại công thức một chút

D4=LARGE(INDIRECT(VLOOKUP($B$2,$G$2:$I$6,3,0)),ROW()-1)

thành
D4=LARGE(INDIRECT(VLOOKUP($B$2,$G$2:$I$6,3,0)),ROW()-3)
 

File đính kèm

  • Copy of loc du lieu.xlsx
    17.4 KB · Đọc: 14
Lần chỉnh sửa cuối:
e cần công thức để trích lọc dữ liệu , khi em chọn tháng bất kì từ 01-04 thì sẽ liệt kê ra 10 tên hàng có gia trị lớn nhất. nếu viết công thức không được thì cho em xin code VBA nhé
cám ơn anh, chị nhiều

Thử chạy code này nha:

Mã:
Public Sub LOC_10()
Application.ScreenUpdating = False
Dim sArr(), dArr(), I As Long, K As Long, Cot As Long, Tem As Variant
Tem = [B2] * 1
With Sheets("Data")
    K = .[IV2].End(xlToLeft).Column
    sArr = .[C2].Resize(, K).Value
    For I = 1 To UBound(sArr, 2)
        If sArr(1, I) * 1 = Tem Then
            Cot = I
            Exit For
        End If
    Next I
    sArr = .Range(.[C4], .[C65000].End(xlUp)).Resize(, K).Value
End With
ReDim dArr(1 To UBound(sArr, 1), 1 To 3)
For I = 1 To UBound(sArr, 1)
    dArr(I, 1) = sArr(I, 1)
    dArr(I, 2) = sArr(I, Cot)
    dArr(I, 3) = sArr(I, Cot + 2)
Next I
With Sheets("Lietke")
    .[B4].Resize(I - 1, 3).Value = dArr
    .[B4].Resize(I - 1, 3).Sort Key1:=Range("D4"), Order1:=xlDescending
    .[B14:D65000].ClearContents
End With
Application.ScreenUpdating = True
End Sub
 

File đính kèm

  • loc du lieu final.rar
    19.3 KB · Đọc: 19
Thử chạy code này nha:

Mã:
Public Sub LOC_10()
Application.ScreenUpdating = False
Dim sArr(), dArr(), I As Long, K As Long, Cot As Long, Tem As Variant
Tem = [B2] * 1
With Sheets("Data")
    K = .[IV2].End(xlToLeft).Column
    sArr = .[C2].Resize(, K).Value
    For I = 1 To UBound(sArr, 2)
        If sArr(1, I) * 1 = Tem Then
            Cot = I
            Exit For
        End If
    Next I
    sArr = .Range(.[C4], .[C65000].End(xlUp)).Resize(, K).Value
End With
ReDim dArr(1 To UBound(sArr, 1), 1 To 3)
For I = 1 To UBound(sArr, 1)
    dArr(I, 1) = sArr(I, 1)
    dArr(I, 2) = sArr(I, Cot)
    dArr(I, 3) = sArr(I, Cot + 2)
Next I
With Sheets("Lietke")
    .[B4].Resize(I - 1, 3).Value = dArr
    .[B4].Resize(I - 1, 3).Sort Key1:=Range("D4"), Order1:=xlDescending
    .[[B][COLOR=#ff0000]B14[/COLOR][/B]:D65000].ClearContents
End With
Application.ScreenUpdating = True
End Sub
Phải là B4 chứ, với lại nên bẩy lỗi khi người dùng gõ số khác ngoài số từ 1-4.
Có thể dùng cách khác để lọc, ADO chẳng hạn.
 
Phải là B4 chứ, với lại nên bẩy lỗi khi người dùng gõ số khác ngoài số từ 1-4.
Có thể dùng cách khác để lọc, ADO chẳng hạn.

Đề bài yêu cầu lọc và sort liệt kê 10 người có số lớn nhất theo thứ tự giảm dần.

Và lệnh .[B14:D65000].ClearContents là sau khi mình đã sỏrt thì mình xóa dữ liệu phía dưới chỉ chừa 10 dòng phía trên theo yêu cầu của đề bài.

-thêm cái bẫy lỗi có lẽ hợp lý hơn, có thể bạn ấy có đến 12 tháng để mà sort.
 
Đề bài yêu cầu lọc và sort liệt kê 10 người có số lớn nhất theo thứ tự giảm dần.

Và lệnh .[B14:D65000].ClearContents là sau khi mình đã sỏrt thì mình xóa dữ liệu phía dưới chỉ chừa 10 dòng phía trên theo yêu cầu của đề bài.

-thêm cái bẫy lỗi có lẽ hợp lý hơn, có thể bạn ấy có đến 12 tháng để mà sort.
hihi, nếu dữ liệu ít hơn 10 dòng thì sao?
 
Lại thêm 1 ý kiến nữa, liệu dòng thứ 11 mà có số liệu trùng với dòng số 10 thì sẽ liệt kê và lọc như thế nào nhỉ?

Cái này do yêu cầu của đề bài thôi...hihi
Do vậy ta nên dùng ADO, ADO sẽ giải quyết được vấn đề này.
 
Do vậy ta nên dùng ADO, ADO sẽ giải quyết được vấn đề này.


Bạn có thể dùng ADO để giải quyết yêu cầu đề bài này được không? Mình cũng rất muốn học hỏi thêm về ADO.
Cảm ơn bạn nhiều!
Thực ra khi giải quyết bất kỳ 1 đề bài nào chủ yếu đúng mục đích của người hỏi, nên chắc chắn khi làm, sẽ phát sinh nhiều vấn đề và khó lường trước các tình huống và cũng do người hỏi cũng chưa chắc lường hết các tình huống. Có rất nhiều bài làm ra như thế này, đúng ý ở bước 1 rồi lại nghĩ thêm ra nhiều yêu cầu khác nên mình chưa lường trước được các tình huống mà bẫy lỗi.

Cảm ơn bạn đã góp ý xây dựng.
 
Chỉnh sửa lần cuối bởi điều hành viên:
Giúp mình làm bài tập tính đơn giá

1) Đơn giá (USD): dựa vào Mã hàng tra trong Danh mục hàng kết hợp với Hình thức bán để có giá trị hợp lý.
Biết rằng Hình thức bán là sỉ nếu SL >=10, còn ngược lại thì Hình thức bán là Lẻ
2) Thành tiền (VNĐ): = (SL*Đơn giá (USD)+ Thuế VAT)*Tỷ giá. biết nếu ĐVT là "Bộ" thì Tỷ giá 5%, còn người là thì =10%
4) Tỷ giá: dựa vào ngày bán tra trong thông tin tỷ giá để có giá trị hợp lý theo Ngày
 

File đính kèm

  • Book1.xls
    33.5 KB · Đọc: 14
1) Đơn giá (USD): dựa vào Mã hàng tra trong Danh mục hàng kết hợp với Hình thức bán để có giá trị hợp lý.
Biết rằng Hình thức bán là sỉ nếu SL >=10, còn ngược lại thì Hình thức bán là Lẻ
2) Thành tiền (VNĐ): = (SL*Đơn giá (USD)+ Thuế VAT)*Tỷ giá. biết nếu ĐVT là "Bộ" thì Tỷ giá 5%, còn người là thì =10%
4) Tỷ giá: dựa vào ngày bán tra trong thông tin tỷ giá để có giá trị hợp lý theo Ngày
Đơn giá (USD), E4:
Mã:
=VLOOKUP(B4,$A$22:$E$26,IF(D4>=10,4,5),0)
Thành tiền (VND), F4:
Mã:
=E4*(100%+IF(VLOOKUP(B4,$A$22:$E$26,3,0)="Bộ",5%,10%))*VLOOKUP(DATE(2013,8,C4),$H$4:$I$12,2)
Thống kê thành tiền bán sỉ, H22:
Mã:
=SUMPRODUCT(($B$4:$B$13=INDEX($A$22:$A$26,MATCH($G22,$B$22:$B$26,0),))*($D$4:$D$13>=10),$F$4:$F$13)
Thống kê thành tiền bán lẻ, I22:
Mã:
=SUMPRODUCT(($B$4:$B$13=INDEX($A$22:$A$26,MATCH($G22,$B$22:$B$26,0),))*($D$4:$D$13<10),$F$4:$F$13)
 
thanks b. nhiều, cho mình hỏi với những lệnh điều kiện dài, thì có phải mình ưu tiên điều kiện sau cùng rồi mới tới điều kiện ban đầu phải không
 

File đính kèm

  • Screenshot (89).jpg
    Screenshot (89).jpg
    19.3 KB · Đọc: 47
  • Screenshot (89).jpg
    Screenshot (89).jpg
    10.5 KB · Đọc: 4
Lần chỉnh sửa cuối:
thanks b., nhưng không hiểu sao khi mình add hàm vào thì excel lại báo lỗi, trong khi mình nhìn thì thấy mọi thứ đều ok
View attachment 97465
Cái hình nhỏ chút xíu vậy thì có đọc được cái gì đâu mà biết đó là lỗi gì. Khi xuất hiện hộp thoại như vậy, thay vì bạn nhấn phím Print Screen thì bạn nhấn tổ hợp phím Alt + Print Screen, bạn sẽ chụp được riêng hộp thoại này mà không phải là toàn bộ màn hình. Sau khi chụp xong thì bạn mở chương trình Paint có sẵn của Windows, dán nó vào đó và lưu lại, bạn sẽ được cái hình rõ hơn.
 
Status
Không mở trả lời sau này.
Web KT

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

Back
Top Bottom