Có thể lấy dữ liệu từ 2 sheet được không? (1 người xem)

Liên hệ QC

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

matran25251325

Thành viên tiêu biểu
Tham gia
13/1/11
Bài viết
424
Được thích
39
Cho em hỏi nếu em có sheet 1, sheet 2 là sheet dữ liệu (các cột, hàng giống nhau, chỉ khác dữ liệu). ở sheet 3 em có thể lấy dữ liệu từ sheet 1 hoặc sheet 2 được không?
 
Đây là công việc của CONSOLIDATE
Trong diễn đàn đã có trả lời rồi. Dùng từ khoá trên để tìm.
 
Upvote 0
theo bài 2 thì dữ liệu được tổng hợp từ 2 sheet dữ liệu khác. nhưng ý mình hỏi là có thể chọn dữ liệu từ shet 1 hoặc có thể chọn dữ liệu từ shet 2. ví dụ mình có dữ liệu shet 1 là dữ liêu năm 2012, shet 2 là dữ liệu năm 2013. ở shet 3 ta có thể gọi Form để chọn dữ liệu từ shet 1 và shet 2 được không?
 
Lần chỉnh sửa cuối:
Upvote 0
theo bài 2 thì dữ liệu được tổng hợp từ 2 sheet dữ liệu khác. nhưng ý mình hỏi là có thể chọn dữ liệu từ shet 1 hoặc có thể chọn dữ liệu từ shet 2. ví dụ mình có dữ liệu shet 1 là dữ liêu năm 2012, shet 2 là dữ liệu năm 2013. ở shet 3 ta có thể gọi Form để chọn dữ liệu từ shet 1 và shet 2 được không?

Nói lòng vòng chi cho mất công vậy?
Bạn đưa dữ liệu của bạn lên đây luôn có phải là nhanh hơn không?
 
Upvote 0
theo bài 2 thì dữ liệu được tổng hợp từ 2 sheet dữ liệu khác. nhưng ý mình hỏi là có thể chọn dữ liệu từ shet 1 hoặc có thể chọn dữ liệu từ shet 2. ví dụ mình có dữ liệu shet 1 là dữ liêu năm 2012, shet 2 là dữ liệu năm 2013. ở shet 3 ta có thể gọi Form để chọn dữ liệu từ shet 1 và shet 2 được không?
Có nhiều cách để lấy, nhưng ít ra cũng phải có file mẫu chứ bạn.
 
Upvote 0
!$@!! quên là post file lên cho lẹ nhỉ. Với file em đưa lên thì code em chỉ copy dữ liệu từ shet DULIEU, vậy các anh có thể giúp em là sau khi mở form (từ cột A9 shet TLuong) e có thể chọn dữ liệu từ 2 shet DULIEU và DULIEU1 được không? vì tính chất công việc thường có thêm những công việc không nằm trong DM. em cám ơn
 

File đính kèm

Upvote 0
-\\/. thầy NDU và anh Hai Lúa giúp em với )(&&@@

Bạn làm hết cả rồi còn gì
Trong code có đoạn:
Mã:
sArray = Filter2DArray([COLOR=#ff0000]Sheet2[/COLOR].Range("A4:C65536").Value, 1, "[", False)
Là đang lấy dữ liệu tại sheet2 (tức Sheet DULIEU)
Giờ nếu muốn lấy dữ liệu tại sheet DULIEU1 thì sửa Sheet2 thành Sheet3 thôi
 
Upvote 0
Dạ ý em là có thể lấy dữ liệu cả 2 shet 2 và 3 luôn anh, chứ không phải là lấy từ 1 shet
 
Upvote 0
Dạ ý em là có thể lấy dữ liệu cả 2 shet 2 và 3 luôn anh, chứ không phải là lấy từ 1 shet

Theo như bạn nói ở đây:
ý mình hỏi là có thể chọn dữ liệu từ shet 1 hoặc có thể chọn dữ liệu từ shet 2. ví dụ mình có dữ liệu shet 1 là dữ liêu năm 2012, shet 2 là dữ liệu năm 2013. ở shet 3 ta có thể gọi Form để chọn dữ liệu từ shet 1 và shet 2 được không?
Thì tôi hiểu là bạn muốn chọn dữ liệu sheet này HOẶC sheet kia chứ không phải tổng hợp dữ liệu cả 2 sheet, đúng không?
Vậy thì bạn tạo 1 ComboBox, checkBox hay cái gì gì đó rồi gán vào code thôi
Ví dụ:
Nếu checkbox đang check thì
sArray = Filter2DArray(Sheet2.Range("A4:C65536").Value, 1, "[", False)
Ngược lại thì:
sArray = Filter2DArray(Sheet3.Range("A4:C65536").Value, 1, "[", False)
-------------
Tôi không hiểu tại sao bạn lại làm không được (trong khi những thứ khác bạn làm quá hoành tráng)
 
Upvote 0
Dạ đúng như ý thầy ạ. Dạ có 1 số em làm và 1 số nhờ các anh trên diễn đàn chỉ dẫn ạ. vấn đề thầy nói tạo thêm check box em chưa hiểu lắm ạ. Nếu được thì thầy giúp em vấn đề này trên file lun được ko ạ.&&&%$R nhiều lúc hơi ngu nên thầy thông cảm
 
Lần chỉnh sửa cuối:
Upvote 0
)(&&@@ Thầy NDU ơi giúp em tạo cái combobox để chọn dữ liệu như ý của thầy với. -\\/.
 
Upvote 0
thầy NDU ơi giúp em với, hic làm từ trưa giờ mà vẫn không đươc !$@!!
 
Upvote 0
Thầy NDU ơi em tạo 1 checkbox và code thế này nhưng sao nó báo lỗi ở phần em tô đỏ, mong thầy hướng dẫn và sửa lỗi giùm em:

Private Sub CheckBox1_Click()
If CheckBox1 = True Then
sArray = Filter2DArray(Sheet2.Range("A4:C65536").Value, 1, "[", False)
Else
If CheckBox1 = False Then
sArray = Filter2DArray(Sheet3.Range("A4:C65536").Value, 1, "[", False)
End If
End Sub
 
Upvote 0
checkbox em tạo vào form code bị lỗi ở đâu mong Thầy và các anh chỉnh sửa và giúp đỡ
 

File đính kèm

Upvote 0
checkbox em tạo vào form code bị lỗi ở đâu mong Thầy và các anh chỉnh sửa và giúp đỡ

Code cho UserForm:
Mã:
Private Sub UserForm_Initialize()
  On Error Resume Next
  hWin = FindWindow("ThunderDFrame", Me.Caption)
  SetWindowProc hWin, True
  CheckBox1_Click
End Sub
Code cho CheckBox:
Mã:
Private Sub CheckBox1_Click()
  Dim wks As Worksheet
  If CheckBox1.Value Then
    Set wks = Sheet2
  Else
    Set wks = Sheet3
  End If
  sArray = Filter2DArray(wks.Range("A4:C65536").Value, 1, "[", False)
  With ListBox1
    .List() = sArray
    .ListStyle = fmListStyleOption
    .MultiSelect = fmMultiSelectMulti
  End With
End Sub
---------------------------
Ham hố chi mấy thứ cao cấp để rồi khi có trục trặc lại phải la làng thế nhỉ?
 
Upvote 0
Thầy ơi cho em hỏi là khi check để chọn dữ liệu ở shet 2 thi dữ liệu copy đầy đủ. nhưng sao khi em chọn dữ liệu ở shet 3 thì dữ liệu lấy không đúng. code bị thiếu chỗ nào vậy thầy. Thầy thông cảm em chỉ mún học hỏi thêm và có ích cho công việc.)(&&@@ Em cũng seard nhiều bài trên diễn đàn nhưng chưa làm được nên em mới bị quýnh lên.
 

File đính kèm

Upvote 0
Theo em nghĩ code ở shet TLuong vùng dữ liệu em chỉ lấy ở shet DULIEU, như vậy không bít đúng không. và em thêm đoạn bôi đỏ vào ko bít đúng ko nữa

If Target.Count = 1 Then
Set Vung = Sheets("DULIEU").Range(Sheets("DULIEU").[B10], Sheets("DULIEU").[B10000].End(xlUp)).Offset(, -1)
Set Vung = Sheets("DULIEU1").Range(Sheets("DULIEU1").[B10], Sheets("DULIEU1").[B10000].End(xlUp)).Offset(, -1)
 
Lần chỉnh sửa cuối:
Upvote 0
Thầy NDU ơi sau khi thêm đoạn tô đỏ trên và test thì dữ liệu lại lấy đúng với shet 3 nhưng shet 2 lại không đúng. Mong bác giúp em|||||
 
Upvote 0
!$@!! Thầy NDU thoát ẩn thoát hiện. giúp em được 1 bài rồi bật vô âm tính. Phải chi diễn đàn này có chức năng chát room thì gọi thầy dễ hơn &&&%$R
 
Upvote 0
!$@!! Thầy NDU thoát ẩn thoát hiện. giúp em được 1 bài rồi bật vô âm tính. Phải chi diễn đàn này có chức năng chát room thì gọi thầy dễ hơn &&&%$R

Không phải tôi không nghe bạn nói
Có điều tôi.. chán mấy bài này lắm rồi ---> Lười
Thay vì la làng, bạn tự mình suy nghĩ cho có "lao động"
 
Upvote 0
nói thật em cũng đã thử làm nhưng kết quả ko đúng nên em mới nhờ đến thầy và mọi người. Em cũng chỉ muốn học hỏi thêm và mở rộng thêm cho công việc. Với thầy có thể là đơn giản, với em nó là cái mới. Thầy đã chán thì thôi vậy. Dù gì cũng cảm ơn thầy. Hỏi đơn giản thì thầy lại bảo " cái này đơn giản bạn tự tìm lấy", còn hỏi phức tạp thì thầy lại nói " ham hố chi cái phức tạp".Cũng chẳng bít nên hỏi sao cho vừa lòng.
 
Lần chỉnh sửa cuối:
Upvote 0
Có ai giúp em về vấn đề này với, thật sự em bế tắt rồi !$@!!
 
Upvote 0
+-+-+-+ thầy NDU ơi giúp em thì giúp cho chót, em chạy code cả đêm vẫn không được thầy ơi.!$@!! thầy giúp em lần này với
 
Upvote 0
Thầy NDU ơi sau khi thêm đoạn tô đỏ trên và test thì dữ liệu lại lấy đúng với shet 3 nhưng shet 2 lại không đúng. Mong bác giúp em|||||
Trong sheet TLuong DT bạn có code cho sự kiện Worksheet_Change() trong đó có lệnh:
Set Vung = Sheets("DULIEU").Range(Sheets("DULIEU").[B10], Sheets("DULIEU").[B10000].End(xlUp)).Offset(, -1)
Khi bạn tích chọn lấy dữ liệu trong sheet DULIE1 sự kiện trên lại tìm trong DULIEU nên không có. Vì vậy dữ liệu không xuất ra.
Vậy bạn đưa code sự kiện Worksheet_Change() vào trong code của nút chọn Form luôn thì tiện hơn (không dùng sự kiện Worksheet_Change() nữa). Với code đã có huy vọng bạn tự làm được
 
Upvote 0
em chưa hiểu lắm, giờ nhìn code như cái đám rừng. đầu óc rối bù. anh giúp được thì giúp em với
 
Upvote 0

File đính kèm

Upvote 0
hic nếu bít thế em đã đặt tên khác rồi (rút kinh nghiệm). Code bị lỗi là dữ liệu ở vùng từ cột E đến cột L bị mất khi chọn mã hiệu. Anh xem lại giùm em đoạn này với
 
Upvote 0
hic nếu bít thế em đã đặt tên khác rồi (rút kinh nghiệm). Code bị lỗi là dữ liệu ở vùng từ cột E đến cột L bị mất khi chọn mã hiệu. Anh xem lại giùm em đoạn này với
Bạn thay thế đoạn code này trong code nút chọn của form rồi test lại thử
[GPECODE=vb] If Not Rng Is Nothing Then
iHang = Rng.Row
iNhay = Rng.End(xlDown).Row - 1
If iNhay > 6500 Then iNhay = Sh.Range("M65500").End(xlUp).Row
Sh.Range("D" & iHang & ":R" & iNhay).Copy ActiveCell.Offset(, 3)
ActiveSheet.Range("A" & ActiveCell.Row + iNhay - iHang + 1).Select
End If


[/GPECODE]
 
Upvote 0
Theo code worksheet_change cũ thì code có đoạn này:
Vung(iHang).Offset(, 1).Resize(iNhay, 17).Copy Target.Offset(, 1)
Với code chỉ copy từ sheet DULIEU VÀ DULIEU1 đúng với số cột là 17 cột. Hình như code anh đưa vào com2 chưa chính xác lắm.
 
Upvote 0
dạ file test chạy được rồi anh. Giờ em đưa vào file chính xem thế nào. Anh có thể cho em ý nghĩa đoạn code trên được ko ạ
 
Upvote 0
Theo code worksheet_change cũ thì code có đoạn này:
Vung(iHang).Offset(, 1).Resize(iNhay, 17).Copy Target.Offset(, 1)
Với code chỉ copy từ sheet DULIEU VÀ DULIEU1 đúng với số cột là 17 cột. Hình như code anh đưa vào com2 chưa chính xác lắm.
Chính xác hoặc không chính xác. Không hình như được
Không chính xác ở đâu, nêu cụ thể. mình copy từ cột A->R là 18 cột
 
Upvote 0
dạ được rồi anh. Em test có gì trục trặc thì em lại phiền anh sau }}}}}. Dạ TK a nhiều
 
Upvote 0
Sau khi test ở file chính thì code xuất hiện lỗi mong anh viehoai khắc phục giùm em. ở sheet DULIEU hoặc sheet DULIEU1 nếu dữ liệu các hàng gần nhau thì khi copy nó sẽ hiện lỗi như trong file.
 

File đính kèm

Upvote 0
Sau khi test ở file chính thì code xuất hiện lỗi mong anh viehoai khắc phục giùm em. ở sheet DULIEU hoặc sheet DULIEU1 nếu dữ liệu các hàng gần nhau thì khi copy nó sẽ hiện lỗi như trong file.
Tùy theo dữ liệu mà bạn có thể tự sửa code cho mình, nghiêm cứu kỹ tí là được mà
[GPECODE=vb]Private Sub CommandButton2_Click()
' Chuyen cac lua chon sang Sheet
Dim StartCell As Range
Dim Vung As Range, iHang As Long, iNhay As Long
Dim Cll As Range, Rng As Range
Dim Sh As Worksheet
If Me.CheckBox1 Then
Set Sh = Sheet2
Else
Set Sh = Sheet3
End If
On Error GoTo ErrHandler
With ListBox1
For I = 0 To .ListCount - 1
Set StartCell = Selection
If .Selected(I) Then
StartCell.Value = .List(I, 0)
StartCell.Offset(, 1).Value = .List(I, 1)
StartCell.Offset(, 2).Value = .List(I, 2)
Set Vung = Sh.Range(Sh.[A10], Sh.[A10000].End(xlUp))
Set Rng = Vung.Find(.List(I, 0))
If Not Rng Is Nothing Then
iHang = Rng.Row
If Rng.Offset(1).Value <> "" Then
Sh.Range("D" & iHang & ":R" & iHang).Copy ActiveCell.Offset(, 3)
ActiveCell.Offset(1).Select
Else
iNhay = Rng.End(xlDown).Row - 1
If iNhay > 6500 Then iNhay = Sh.Range("M65500").End(xlUp).Row
Sh.Range("D" & iHang & ":R" & iNhay).Copy ActiveCell.Offset(, 3)
ActiveSheet.Range("A" & ActiveCell.Row + iNhay - iHang + 1).Select
End If
End If
End If
Next
End With
' Thay doi Cell lua chon sang vi tri moi
ErrHandler:
Unload Me
Set Vung = Nothing: Set Rng = Nothing
End Sub[/GPECODE]
 
Upvote 0
Dạ với code trên thì dữ liệu bên sheet DULIEU1 lấy ko copy dữ liệu từ cột E đến cột R, anh xem lại giùm em 1 tí.!$@!! đâu phải em ko tự nghiên cứu nhưng làm cái này nó lỗi cái khác nên mới nhờ các cao thủ trợ giúp.
 
Upvote 0
Dạ với code trên thì dữ liệu bên sheet DULIEU1 lấy ko copy dữ liệu từ cột E đến cột R, anh xem lại giùm em 1 tí.!$@!! đâu phải em ko tự nghiên cứu nhưng làm cái này nó lỗi cái khác nên mới nhờ các cao thủ trợ giúp.
Bạn nói không đúng chỗ nào, nói không rõ biết đâu mà xem lại?
 
Upvote 0
Dạ không đúng ở chỗ là khi mở form lên và lấy dữ liệu ở sheet DULIEU1 (chọn 1 mã hiệu nào đó) thì dữ liệu chỉ copy 3 cột A, B và C thôi chứ không phải copy từ A đến R. bên sheet DULIEU thi ok. chắc thiếu điều kiện nào đó.
 
Upvote 0
Dạ không đúng ở chỗ là khi mở form lên và lấy dữ liệu ở sheet DULIEU1 (chọn 1 mã hiệu nào đó) thì dữ liệu chỉ copy 3 cột A, B và C thôi chứ không phải copy từ A đến R. bên sheet DULIEU thi ok. chắc thiếu điều kiện nào đó.
Bạn xem lại đi mình test bình thường không như bạn nói
 
Upvote 0
Ah được rồi anh. em đặt nhầm tên sheet. anh viehoai em hỏi là sau khi chọn 1 mã hiệu nào đó và xuất ra thì sao tại vị trí mình chọn nó bị hiện tượng cái ô ở vị trí đó giống như đang lick chuột vậy. Nếu xài sự kiện worksheet_change thì không có hiện tượng đó.
 
Upvote 0
Ah được rồi anh. em đặt nhầm tên sheet. anh viehoai em hỏi là sau khi chọn 1 mã hiệu nào đó và xuất ra thì sao tại vị trí mình chọn nó bị hiện tượng cái ô ở vị trí đó giống như đang lick chuột vậy. Nếu xài sự kiện worksheet_change thì không có hiện tượng đó.
Cả 2 đều giống nhau về sau khi xuất dự liệu xong chọn cell kế tiếp (dùng Select). Bạn dùng sự kiện WorkSheetChange() có cặp lệnh :
[GPECODE=vb]Application.ScreenUpdating = False
..........
Application.ScreenUpdating = True[/GPECODE]
Nghĩa là ngưng cặp nhật màn hình cho đến khi thực hiện mọi thứ xong mới cập nhật màn hình nên bạn không thấy "hiện tượng đó". Trong code mình thêm cặp lệnh đó vẫn được vậy thôi
 
Upvote 0
dạ nếu thêm thì thêm ở chỗ nào anh. Em thêm đoạn Application.EnableEvents = True sau next nhưng vẫn chưa được.
 
Upvote 0
dạ nếu thêm thì thêm ở chỗ nào anh. Em thêm đoạn Application.EnableEvents = True sau next nhưng vẫn chưa được.
Không phải câu lệnh này mà là
Application.ScreenUpdating = False 'Đặt ĐẦU code CommandButton2_Click ..........
Application.ScreenUpdating = True 'Đặt CUỐI code CommandButton2_Click
 
Upvote 0
http://www.mediafire.com/?toq2p27tc478ga3
cháu có tài liệu này mong các bác giúp ạ:)
cháu muốn cột tiền ăn trong sheet 5 = tổng tiền ăn trong sheet1 + sheet2 + ... + sheet 4 thì phải làm ntt ạ?
do Sheet 5 là một VB kín nên cháu muốn tạo 1 VB riêng. Liệu VB riêng ấy có tổng hợp được Ở các sheet kia lại được không ạ ( nói dễ hiểu thì cháu muốn thay văn bản mới = Sheet 5 để cất zữ)
các bác giúp chau với ạ :))
 
Upvote 0

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

Back
Top Bottom