Bạn dùng file đính kèm dưới đây nhé.Chào các anh chị, em là Tiến. Cũng là dân mới trong lập trình Excel.Em nhớ anh chị hỗ trợ cho em một đoạn code để coppy một vùng dữ liệu bất kỳ thành một cột.Em cũng có đính kèm file, mong anh chị giúp dùm.
Option Explicit
Private Sub Chuyen12ThangThanh1Cot()
Dim Rng As Range, cRng As Range, Clls As Range
Dim eRw As Long, jJ As Byte
Set Rng = [b4].CurrentRegion.Offset(3)
eRw = Rng.Rows.Count: Application.ScreenUpdating = False
Cells(eRw + 5, "B").CurrentRegion.Clear
Cells(eRw + 4, 1).Value = [A2].Value
Cells(eRw + 4, 2).Value = Left([D1].Value, 8)
For jJ = 2 To Rng.Columns.Count
Set cRng = Rng.Cells(1, jJ).Resize(eRw)
With [B65500].End(xlUp).Offset(1, -1)
.Value = Range("Thang").Cells(1, jJ - 1).Value
.Interior.ColorIndex = 34 + jJ Mod 6
End With
For Each Clls In cRng
With [B65500].End(xlUp).Offset(1)
.Value = Cells(Clls.Row, jJ).Value
End With
Next Clls
Next jJ
End Sub
Sub ToColumn()
Dim Rg1, Rg2, rg3 As Range
Set Rg1 = Application.InputBox("Nhap vung chuyen:", Type:=8)
Set Rg2 = Application.InputBox("O dau tien cot ket qua:", Type:=8)
For j = 1 To Rg1.Columns.Count
Set rg3 = Rg1.Columns(j)
For Each cel In rg3.Cells
cel.Copy Rg2
Set Rg2 = Rg2.Offset(1)
Next
Next
End Sub
For Each cel In rg3.Cells
cel.Copy Rg2
Set Rg2 = Rg2.Offset(1)
Next
For Each cel In rg3.Cells
If cel.Value <> 0 Then cel.Copy Rg2: Set Rg2 = Rg2.Offset(1)
Next
Sub ToColumn()
Dim nam As Integer
Dim ch As String
Dim Rg1, Rg2, rg3 As Range
nam = InputBox("Nhap nam 4 chu so")
Set Rg1 = Application.InputBox("Nhap vung chuyen:", Type:=8)
Set Rg2 = Application.InputBox("O dau tien cot ket qua:", Type:=8)
ch = IIf(nam Mod 4 = 0, "312931303130313130313031", "312831303130313130313031")
For j = 1 To Rg1.Columns.Count
Set rg3 = Rg1.Columns(j)
For i = 1 To Mid(ch, j * 2 - 1, 2)
Rg1.Cells(i, j).Copy Rg2: Rg2.Offset(, 1).Value = DateSerial(nam, j, i): Set Rg2 = Rg2.Offset(1)
Next
Next
End Sub
ch = IIf(nam Mod 4 = 0, "312931303130313130313031", "312831303130313130313031")
[COLOR=Purple][B]
Ch ="312" & IIf(Nam Mod 4 =0 , "9","8") & "31303130313130313031" [/B][/COLOR]
Trước hết chân thành cảm ơn bác Sealand đã quan tâm, nhưng em còn gà lắm, bác có thể bớt chút thời gian chỉ dẫn được hok? Thanks bác. Em có 1 workbook gồm 20 sheets, mỗi sheet chứa dữ liệu của 12 tháng, bây giờ em muốn lọc dữ liệu ra một sheet mới ( xếp theo 1 cột, từ tháng 1 -tháng 12 năm 80, tiếp theo là tháng 1- tháng 12 năm 81 ...)Chỉ cần sửa đi chút xíu là được. Vấn đề ở chỗ Set Rg=....
Nếu tất cả các sheet của bạn đều có cùng một cấu trúc thì có thể dùng công thức. Bạn xem trong file, tôi giả lập dữ liệu cho 4 năm.Trước hết chân thành cảm ơn bác Sealand đã quan tâm, nhưng em còn gà lắm, bác có thể bớt chút thời gian chỉ dẫn được hok? Thanks bác. Em có 1 workbook gồm 20 sheets, mỗi sheet chứa dữ liệu của 12 tháng, bây giờ em muốn lọc dữ liệu ra một sheet mới ( xếp theo 1 cột, từ tháng 1 -tháng 12 năm 80, tiếp theo là tháng 1- tháng 12 năm 81 ...)
cho SPAM 15 fút, khà, khà,. . .
Trước hết chân thành cảm ơn bác Sealand đã quan tâm, nhưng em còn gà lắm, bác có thể bớt chút thời gian chỉ dẫn được hok? Thanks bác. Em có 1 workbook gồm 20 sheets, mỗi sheet chứa dữ liệu của 12 tháng, bây giờ em muốn lọc dữ liệu ra một sheet mới ( xếp theo 1 cột, từ tháng 1 -tháng 12 năm 80, tiếp theo là tháng 1- tháng 12 năm 81 ...)
Chào anh em trong diễn đàn. Hôm nay em lại có thời gian quay lại diễn đàn, với cùng một câu hỏi của chủ đề này nhưng rộng hơn chút xíu, em có gửi file đính kèm, gồm nhiều sheet có cấu trúc giống nhau, và muốn tổng hợp số liệu từ nhiều sheet đó thành một cột (cụ thể thì em đã ghi trong sheet "TH" rùi). Rất mong được các pác chỉ giúp em cái nha.thanks bác Sealand nhiều nhé. Chúc một ngày vui vẻ
Cảm ơn pác Sealand nhiều nhé. Dữ liệu cần lọc từ 1980-1999 thì hoàn toàn chính xác, nhưng từ năm 2000 trở đi thì lại sai mất, pác bỏ chút thời gian xem lại giúp em cái nhá. Thanks!
Sub TongHop()
Application.ScreenUpdating = False
Sheets("TongHop").[b2:c65536].ClearContents
For Each sh In Worksheets
If sh.Name <> Sheets("TongHop").Name Then
For i = 1 To 12
For Each cls In sh.Cells(7, i + 2).Resize(31) '.SpecialCells(2)
cls.Offset(, -i - 1).ClearContents
If cls > 0 Then cls.Offset(, -i - 1).Value = cls.Offset(, -i) & "/" & i & "/" & sh.Name
cls.Offset(, -i - 1).NumberFormat = "mm/d/yy"
Next
sh.Cells(7, i + 2).Resize(31).Copy Sheets("TongHop").[b65536].End(3)(2)
sh.[a7].Resize(31).Copy Sheets("TongHop").[c65536].End(3)(2)
Next
sh.[a7].Resize(31).ClearContents
End If
Next
End Sub