Lọc giúp em Đơn giá tổng cộng của mỗi công việc sang Sheet mới (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

Dauthivan

Thành viên tiêu biểu
Tham gia
15/8/08
Bài viết
565
Được thích
327
Em có Sheet!don gia chi tiet là sheet đầu vào, tương ứng với tất cả toàn bộ các công việc em muốn lọc ra STT, tên công việc, đơn vị tính và đặc biệt là giá trị thành tiền tổng cộng của công việc đó sang một sheet mới (trong file đính kèm em xin minh hoạ mẫu một công việc đầu tiên em muốn lọc).

Xin kính nhờ mọi người giúp đỡ./.
 

File đính kèm

Em có Sheet!don gia chi tiet là sheet đầu vào, tương ứng với tất cả toàn bộ các công việc em muốn lọc ra STT, tên công việc, đơn vị tính và đặc biệt là giá trị thành tiền tổng cộng của công việc đó sang một sheet mới (trong file đính kèm em xin minh hoạ mẫu một công việc đầu tiên em muốn lọc).

Xin kính nhờ mọi người giúp đỡ./.
Xem trong file đính kèm nhé!
 

File đính kèm

Upvote 0
Xin nhờ bác và mọi người giúp em thêm một cách bằng VBA cho em học hỏi với ah.

Xem trong file đính kèm nhé!
Đa tạ bác đã giúp cho.

Em xin phép được "nhờ thêm" một chút nữa phiền mọi người giúp cho: Em đang háo hức tập tìm hiểu về VBA do đó em kính nhờ bác và mọi người giúp em thêm một cách bằng VBA nữa ah.

Rất mong mọi người chỉ giúp.
 
Upvote 0
Đa tạ bác đã giúp cho.

Em xin phép được "nhờ thêm" một chút nữa phiền mọi người giúp cho: Em đang háo hức tập tìm hiểu về VBA do đó em kính nhờ bác và mọi người giúp em thêm một cách bằng VBA nữa ah.

Rất mong mọi người chỉ giúp.
Dùng Advanced Filter sẽ rất đơn giản
Đầu tiên bạn thiết lập vùng điều kiện như hình:

untitled.JPG

Xong, chạy code dưới đây:
PHP:
Sub Loc()
  With Sheet1.Range("A2:G10000")
    .AdvancedFilter 2, Sheet2.Range("F1:F2"), Sheet2.Range("A5:C5")
    .AdvancedFilter 2, Sheet2.Range("G1:G2"), Sheet2.Range("D5")
  End With
End Sub
Cũng y chang như lọc Advanced Filter bằng tay
 

File đính kèm

Upvote 0
Dùng Advanced Filter sẽ rất đơn giản
Đầu tiên bạn thiết lập vùng điều kiện như hình:

View attachment 74761

Xong, chạy code dưới đây:
PHP:
Sub Loc()
  With Sheet1.Range("A2:G10000")
    .AdvancedFilter 2, Sheet2.Range("F1:F2"), Sheet2.Range("A5:C5")
    .AdvancedFilter 2, Sheet2.Range("G1:G2"), Sheet2.Range("D5")
  End With
End Sub
Cũng y chang như lọc Advanced Filter bằng tay

Cách làm của thày độc đáo và lạ quá, em chưa hiểu được vùng điều kiện nó liên hệ với Code kiểu gì (em chỉ lơ mơ <> thể hiện lấy số thứ tự, tổng nghĩa lọc tổng...), nhưng khi xem code em không hiểu lắm cụ thể: tên sheet trong bài rõ ràng không phải là sheet1, sheet2 như code viết.

Xin thày giải thích, chỉ bảo cho em hiểu code với.
 
Upvote 0
Cách làm của thày độc đáo và lạ quá, em chưa hiểu được vùng điều kiện nó liên hệ với Code kiểu gì (em chỉ lơ mơ <> thể hiện lấy số thứ tự, tổng nghĩa lọc tổng...), nhưng khi xem code em không hiểu lắm cụ thể: tên sheet trong bài rõ ràng không phải là sheet1, sheet2 như code viết.

Xin thày giải thích, chỉ bảo cho em hiểu code với.
<> nghĩa là khác rổng ấy mà ---> Có phải sẽ lấy toàn bộ STT không? (không lấy cell rổng)
Còn điều kiện "Tổng cộng" tại tiêu đề THÀNH PHẦN HAO PHÍ thì đơn giản rồi.. dòng có chữ "Tổng cộng", chiếu ngang qua cột G chính là dữ liệu tổng cần lấy ---> Kiểm tra lại dữ liệu sẽ thấy rõ điều này
Nói tóm lại, bài này thậm chí có thể làm bằng tay trong vòng 10s (dùng Advanced Filter theo điều kiện đã ghi ở F1:F2 và G1:G2)
 
Upvote 0
Dùng Advanced Filter sẽ rất đơn giản
Đầu tiên bạn thiết lập vùng điều kiện như hình:

Rất hay, cảm ơn thày Ndu rất nhiều, không ngờ rằng chức năng Advanced Filter trong thực tế lại giải quyết được nhiều bài toán như vậy.
------------
Thưa các thày bài này trong VBA có thể sử dụng phương thức Find để làm không? Nếu có thể, rất mong các thày làm mẫu giúp em vì em vẫn hơi lúng túng khi sử dụng cái này.
 
Lần chỉnh sửa cuối:
Upvote 0
Đang luyện tập về mảng, thêm 1 phương án:

PHP:
STT='Don gia chi tiet'!$A$3:$A$1000
PHP:
TP=OFFSET(STT;;1)
PHP:
DK_1=IF(STT<>"";ROW(STT)-2;"")
PHP:
DK_2=IF(TP='Don gia chi tiet'!$B$15;ROW(TP)-2;"")

Công thức đặt tại A3(sheetTonghop)
PHP:
=IF(ROWS($1:1)>COUNT(DK_1);"";INDEX(OFFSET(STT;;COLUMN()-1);SMALL(DK_1;ROWS($1:1))))
kéo sang ô C3;
ô D3 sẽ như sau:
PHP:
=IF(ROWS($1:1)>COUNT(DK_2);"";INDEX(OFFSET(STT;;8);SMALL(DK_2;ROWS($1:1))))
 

File đính kèm

Upvote 0
Rất hay, cảm ơn thày Ndu rất nhiều, không ngờ rằng chức năng Advanced Filter trong thực tế lại giải quyết được nhiều bài toán như vậy.
------------
Thưa các thày bài này trong VBA có thể sử dụng phương thức Find để làm không? Nếu có thể, rất mong các thày làm mẫu giúp em vì em vẫn hơi lúng túng khi sử dụng cái này.
Dữ liệu nhiều mà "FIND" hơi bị "Rùa" à, nếu dùng mảng trong VBA, bài này lọc trong vòng 0.03 giây.
 

File đính kèm

Upvote 0
Thêm một tham khảo cho vui cửa nhà!

PHP:
Option Explicit:            Option Base 1
Sub ThemMotThamKhao()
 Dim Rng As Range, Cls As Range
 Dim Max_ As Long, jJ As Long, Timer_ As Double
 
 Timer_ = Timer
 Sheets("Don gia chi tiet").Select
 Set Rng = [B65500].End(xlUp).Offset(1, -1)
 Rng.Value = 0
 Max_ = Application.WorksheetFunction.Max(Range([A3], Rng)) + 1
 ReDim Arr(Max_, 4):                         Rng.Value = Max_
 Set Rng = Range([A3], Rng).SpecialCells(xlCellTypeConstants, 1)
 For Each Cls In Rng
    jJ = jJ + 1
    If jJ > 1 Then
        Arr(jJ - 1, 4) = Cls.Offset(-1, 8).Value
    End If
    Arr(jJ, 1) = Cls.Value:         Arr(jJ, 2) = Cls.Offset(, 1).Value
    Arr(jJ, 3) = Cls.Offset(, 3).Value
 Next Cls
 If jJ Then Sheets("Tong hop").[A4].Resize(jJ, 4).Value = Arr
 MsgBox Timer - Timer_
End Sub


Xin cảm ơn BaTê về file!
 
Upvote 0
Dùng Advanced Filter sẽ rất đơn giản
Đầu tiên bạn thiết lập vùng điều kiện như hình:

View attachment 74761

Xong, chạy code dưới đây:
PHP:
Sub Loc()
  With Sheet1.Range("A2:G10000")
    .AdvancedFilter 2, Sheet2.Range("F1:F2"), Sheet2.Range("A5:C5")
    .AdvancedFilter 2, Sheet2.Range("G1:G2"), Sheet2.Range("D5")
  End With
End Sub
Cũng y chang như lọc Advanced Filter bằng tay

Tức là bài này nếu sử dụng Advanced Filter thì vẫn phải có Code đi kèm, em xin phép hỏi liệu có cách nào làm (Advanced Filter kết hợp với động tác thủ công gì đó...) mà không dính dáng gì đến VBA không?
 
Upvote 0
Web KT

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

Back
Top Bottom