mhung12005
Thành viên chậm chạm
- Tham gia
- 20/7/11
- Bài viết
- 1,598
- Được thích
- 1,261
- Nghề nghiệp
- Đâu có việc thì làm
Kiểm tra thử File này xem kết quả có đúng không? Không có nhiều Sheet nên chưa thử.Xin chào các anh, chị trên diễn đàn
Em muốn viết 1 đoạn code tổng hợp dữ liệu, rất mong các anh chị làm giúp hoặc có giải pháp khác.
Các yêu cầu em đã giải thích trong file đính kèm rồi ạ. Xin xem file đính kèm.
Em xin cảm ơn nhiều.
Trong file bạn nói rằng:Xin chào các anh, chị trên diễn đàn
Em muốn viết 1 đoạn code tổng hợp dữ liệu, rất mong các anh chị làm giúp hoặc có giải pháp khác.
Các yêu cầu em đã giải thích trong file đính kèm rồi ạ. Xin xem file đính kèm.
Em xin cảm ơn nhiều.
Vậy xin hỏi lại: Các sheet mà bạn cần tổng hợp có gì làm dấu hiệu nhận biết? Liệu có phải là tổng hợp tất cả những sheet mà tên sheet có dạng N.x (với xlà số nguyên) khổng?Đây là file test nên em chỉ để có 2 sheet dữ liệu (sợ nặng). Thực tế thì có đến 20 sheet.
@ bác Ba Tê: Cảm ơn bác nhiều. Lúc nào cũng rất nhanh và nhiệt tình. Để em test thử code xem sao, có gì lại phiền bác tiếp vậy.Kiểm tra thử File này xem kết quả có đúng không? Không có nhiều Sheet nên chưa thử.
Trong file bạn nói rằng:
Vậy xin hỏi lại: Các sheet mà bạn cần tổng hợp có gì làm dấu hiệu nhận biết? Liệu có phải là tổng hợp tất cả những sheet mà tên sheet có dạng N.x (với xlà số nguyên) khổng?
Code của Ba Tê vậy là được rồi (cũng có thể bỏ luôn công thức CELL("filename"...) gì gì đó và đưa vào code luôn...)@ bác Ba Tê: Cảm ơn bác nhiều. Lúc nào cũng rất nhanh và nhiệt tình. Để em test thử code xem sao, có gì lại phiền bác tiếp vậy.
Thực ra em cũng đang tập tọe cái món VBA này nhưng "tiêu hóa" hơi chậm.
@ anh ndu: Dạ đúng là như vậy đó anh. Các sheet có dạng No. xxx (với xxx tăng dần nhưng không liền nhau). VD như: No. 300, No. 304, No. 305, No. 313, ...anh xem có giải pháp nào tốt hơn để em học hỏi với nhé. Rất cảm ơn anh.
Code của Ba Tê vậy là được rồi (cũng có thể bỏ luôn công thức CELL("filename"...) gì gì đó và đưa vào code luôn...)
Nếu có gì yêu cầu gì khác thì ta bàn tiếp
Đưa số liệu vào các sheet(giả cũng được) và nhập kết quả mong muốn bằng tay để có thể kiểm tra xem code đúng hay sai nhé. Đưa File nên ngay!Nhờ các anh (chị) giúp em viết code cho sheet tong_hop với, em có gửi kèm file và nội dung cần sự giúp đỡ trong sheet tong_hop
Em đưa file lên lại các anh (chị) giúp em với nhé! thanks các anh (chị)! cho em hỏi thêm em tạo 1 form nhập số liệu như vậy nhưng giờ em muốn khi chọn Tap Dân dụng thì khi bấm ghi sẽ ghi vào sheet Dan_dung, chọn Tab Giao_thong thì ghi vào sheet Giao_thong, tương tự cho Quy hoạch thì thêm code thế nà?Đưa số liệu vào các sheet(giả cũng được) và nhập kết quả mong muốn bằng tay để có thể kiểm tra xem code đúng hay sai nhé. Đưa File nên ngay!
Option Explicit
Sub TongHop()
Dim J As Byte, Rws As Long: Dim ShName As String
Dim Sh As Worksheet, Rng As Range, Cls As Range
Rws = [b8].CurrentRegion.Rows.Count
[b8].Resize(Rws, 10).ClearContents
For J = 1 To 4
ShName = Choose(J, "Dan_Dung", "Giao_Thong", "Quy_Hoach", "GPXD", "GPE.COM")
Set Sh = ThisWorkbook.Worksheets(ShName)
If J < 4 Then
Set Rng = Sh.Range(Sh.[f6], Sh.[f6].End(xlDown))
Else
Set Rng = Sh.Range(Sh.[c7], Sh.[c7].End(xlDown))
End If
For Each Cls In Rng
With [b36].End(xlUp).Offset(1)
If J < 4 Then
If UCase$(Sh.Cells(Cls.Row, "Y").Value) = "X" Then
.Value = Cls.Value
.Offset(, 1).Value = Sh.Cells(Cls.Row, "Z").Value
.Offset(, 2).Value = Sh.Cells(Cls.Row, "T").Value
.Offset(, 9).Value = Sh.Cells(Cls.Row, "AA").Value
End If
Else
If UCase$(Cls.Offset(, 2).Value) = "X" Then
.Value = Cls.Value
.Offset(, 1).Value = Cls.Value
.Offset(, 6).Value = Cls.Offset(, 1).Value
.Offset(, 9).Value = Cls.Offset(, 3).Value
End If
End If
End With
Next Cls
Next J
End Sub
Tiện thể nhờ các anh (chị) hỗ trợ em code cho công thức trong file với ạ.
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Sh As Worksheet, Rng As Range, sRng As Range
Dim fAdd As String
If Not Intersect(Target, [K7]) Is Nothing Then
[a17].Resize(9, 9).ClearContents
Set Sh = ThisWorkbook.Worksheets("DATA")
Set Rng = Sh.Range(Sh.[d10], Sh.[d10].End(xlDown))
Set sRng = Rng.Find(Target.Value, , xlFormulas, xlWhole)
If Not sRng Is Nothing Then
fAdd = sRng.Address
Do
With [A25].End(xlUp).Offset(1)
.Value = sRng.Offset(, 8).Value 'Noi Dung TT'
.Offset(, 2).Value = sRng.Offset(, 6).Value 'Ma NDKT'
.Offset(, 4).Value = sRng.Offset(, 10).Value 'Ma Ngành KT'
.Offset(, 5).Value = sRng.Offset(, 12).Value 'Ma Nguòn NSNN'
.Offset(, 6).Value = sRng.Offset(, 9).Value 'TTièn'
End With
Set sRng = Rng.FindNext(sRng)
Loop While Not sRng Is Nothing And sRng.Address <> fAdd
End If
End If
End Sub
PHP:Option Explicit Private Sub Worksheet_Change(ByVal Target As Range) Dim Sh As Worksheet, Rng As Range, sRng As Range Dim fAdd As String If Not Intersect(Target, [K7]) Is Nothing Then [a17].Resize(9, 9).ClearContents Set Sh = ThisWorkbook.Worksheets("DATA") Set Rng = Sh.Range(Sh.[d10], Sh.[d10].End(xlDown)) Set sRng = Rng.Find(Target.Value, , xlFormulas, xlWhole) If Not sRng Is Nothing Then fAdd = sRng.Address Do With [A25].End(xlUp).Offset(1) .Value = sRng.Offset(, 8).Value 'Noi Dung TT' .Offset(, 2).Value = sRng.Offset(, 6).Value 'Ma NDKT' .Offset(, 4).Value = sRng.Offset(, 10).Value 'Ma Ngành KT' .Offset(, 5).Value = sRng.Offset(, 12).Value 'Ma Nguòn NSNN' .Offset(, 6).Value = sRng.Offset(, 9).Value 'TTièn' End With Set sRng = Rng.FindNext(sRng) Loop While Not sRng Is Nothing And sRng.Address <> fAdd End If End If End Sub