Tôi nghĩ bài toán này không đơn giãn thế đâu...Đổi cột sang dòng: Chọn cột cần đổi sau đó copy và chọn cách dán Paste Special, chọn Transpose, OK là được
Tôi nghĩ bài toán này không đơn giãn thế đâu...
Sau khi dùng công thức thì kết quả đạt được phải giống như trong file đính kèm này
Tôi cũng nghĩ như vậy! Nhưng nhìn vào yêu cầu trong file, tác giã nói không được dùng VBA... Vậy phải làm sao đây!Nếu như vậy thì dùng VBA sẽ nhanh hơn là xài công thức!
Tôi nghĩ bài toán này không đơn giãn thế đâu...
Sau khi dùng công thức thì kết quả đạt được phải giống như trong file đính kèm này[/quot
anh nói đúng ! giúp em đi
Em thực sự đang rối lắm các bác dùng công thức cao thủ giúp em đi em đang rất cần
Bạn có thể đưa thêm các ví dụ cách xếp khác không! Theo mình cách này (botay) rồi! Vì dữ liệu không tự nó có khoảng trống và xếp theo số lượng của ngày đó được. Bạn có thể xếp theo dạng bảng lấy code làm chuẩn hoặc theo ngày làm chuẩn thôi!
Bạn nghiên cứu thêm vậy!
Thân.
tôi là lính xa nhà đi trấn phương xaBạn có thể đưa thêm các ví dụ cách xếp khác không! Theo mình cách này (botay) rồi! Vì dữ liệu không tự nó có khoảng trống và xếp theo số lượng của ngày đó được. Bạn có thể xếp theo dạng bảng lấy code làm chuẩn hoặc theo ngày làm chuẩn thôi!
Bạn nghiên cứu thêm vậy!
Thân.
vậy phải làm thế nào đây các anh chị !!! ra tay nghĩa hiệp đi ! anh cadafi cho công thức & code luôn nghen chân thành cảm ơn anh
Sub CotThanhDong()
On Error GoTo ca_dafi
Dim MyRng As Range, Zr, Zc As Integer
Set MyRng = InputBox("Chon vung can chuyen doi","Thong bao",Type:=8)
''//------------------------------------------------------------------------
With Sheets("TMP")
.Cells.ClearContents
.[A1] = "Date": .[B1] = "Code": .[C1] = "Qty"
End With
''//------------------------------------------------------------------------
For Zc = 1 To MyRng.Columns.Count - 1
MaxTmpRow = Sheets("TMP").[A65000].End(xlUp).Row
For Zr = 2 To MyRng.Rows.Count
Sheets("TMP").Cells(MaxTmpRow + Zr - 1, 1) = Format(MyRng.Cells(1, Zc + 1), "dd/mm/yyyy")
Sheets("TMP").Cells(MaxTmpRow + Zr - 1, 2) = MyRng.Cells(Zr, 1)
Sheets("TMP").Cells(MaxTmpRow + Zr - 1, 3) = MyRng.Cells(Zr, Zc + 1)
Next Zr
Next Zc
''//------------------------------------------------------------------------
Sheets("TMP").[C:C].SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Sheets("TMP").Select
Range("A1").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
''//------------------------------------------------------------------------
''Handle Error:
Exit_Err:
Exit Sub
ca_dafi:
MsgBox Err.Number & Chr(13) & Err.Description & Chr(13) & "Ban Phai Nhap Dia Chi Vung can chuyen vao chu!"
Resume Exit_Err
End Sub
Sub TransferData()
Dim Rng As Range, Clls As Range, TempRng As Range
Application.ScreenUpdating = False
Set TempRng = [B3].CurrentRegion
Set Rng = TempRng.Resize(1, TempRng.Columns.Count).SpecialCells(2, 1)
[A14:C10000].ClearContents
For Each Clls In Rng
Er = [C65536].End(xlUp).Row + 1
With Clls.Offset(1, 0).Resize(TempRng.Rows.Count - 1, 1).SpecialCells(2, 1)
.Copy: Cells(Er, 3).PasteSpecial xlPasteValues
.Offset(, -i - 1).Copy: Cells(Er, 2).PasteSpecial xlPasteValues
Cells(Er, 1).Resize(.Cells.Count, 1).Value = Clls.Value
End With
i = i + 1
Next
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub
Kiệt ơi, lúc InputBox hiện ra chẳng lẽ phải gõ địa chỉ vào à?Công thức mình nghĩ chưa ra, code thì đây:
Trước khi chạy bạn phải tạo một sheet trống có tên là TMP. Xem thêm file đính kèm nhé! Bên sheet TroGiup, ban click vào nút [Thuc Hien] sau đó qua sheet TMP để xem kết quả.PHP:Sub CotThanhDong() On Error GoTo ca_dafi Dim MyRng As Range, Za As String, Zr, Zc As Integer Za = InputBox("Chon vung can chuyen doi") Set MyRng = ActiveSheet.Range(Za) ''//------------------------------------------------------------------------ With Sheets("TMP") .Cells.ClearContents .[A1] = "Date" .[B1] = "Code" .[C1] = "Qty" End With ''//------------------------------------------------------------------------ For Zc = 1 To MyRng.Columns.Count - 1 MaxTmpRow = Sheets("TMP").[A65000].End(xlUp).Row For Zr = 2 To MyRng.Rows.Count Sheets("TMP").Cells(MaxTmpRow + Zr - 1, 1) = Format(MyRng.Cells(1, Zc + 1), "dd/mm/yyyy") Sheets("TMP").Cells(MaxTmpRow + Zr - 1, 2) = MyRng.Cells(Zr, 1) Sheets("TMP").Cells(MaxTmpRow + Zr - 1, 3) = MyRng.Cells(Zr, Zc + 1) Next Zr Next Zc ''//------------------------------------------------------------------------ Sheets("TMP").[C:C].SpecialCells(xlCellTypeBlanks).EntireRow.Delete Sheets("TMP").Select Range("A1").Select Range(Selection, Selection.End(xlToRight)).Select Range(Selection, Selection.End(xlDown)).Select Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ DataOption1:=xlSortNormal ''//------------------------------------------------------------------------ ''Handle Error: Exit_Err: Exit Sub ca_dafi: MsgBox Err.Number & Chr(13) & Err.Description & Chr(13) & "Ban Phai Nhap Dia Chi Vung can chuyen vao chu!" Resume Exit_Err End Sub
Lưu ý: Khi chọn vùng, bạn nhớ chọn bao gồm cả tiêu đề cột và tiêu đề dòng luôn nha!
Không gõ địa chỉ vào thì làm sao excel biết vùng nào mình cần chuyển đổi chứ!? Ví dụ cần chuyển vùng B3Kiệt ơi, lúc InputBox hiện ra chẳng lẽ phải gõ địa chỉ vào à?
Vậy dùng code này đi. Cũng lấy được địa chỉ nhưng khỏi cần nhập, chỉ cần quét bằng chuột thôi!Kiệt ơi, lúc InputBox hiện ra chẳng lẽ phải gõ địa chỉ vào à?
Sub thu() Dim za As Range Set za = Application.InputBox("Quet chon vung:", "THong bao", Type:=8) Range("a1").Value = za.Address(0, 0) End Sub
Chèn như thế nào? Bạn đưa file đã chèn thêm mà nó không chạy lên đây xem thử!sao em chèn thêm 01 cột ngày 20/08/09 thì dữ liệu không hiện lên bảng vậy anh ? chỉ em thêm với .... thanks so much
khi em tạo 01 contrl box copy code của anh dán vào , em muốn vùng chọn rộng hơn, ý em là 500 dòng và 30 cột chẳng hạn thì em phải làm sao? anh giúp em nhé ! anh là một cao thủ xin nhận lời cảm ơn chân thành từ 01 người chưa nắm gì về VBA này nghen !!! kính phụcChèn như thế nào? Bạn đưa file đã chèn thêm mà nó không chạy lên đây xem thử!
Tôi chèn thử thấy chạy bình thường mà (đương nhiên là phải bấm nút nó mới chạy)
khi em tạo 01 contrl box copy code của anh dán vào , em muốn vùng chọn rộng hơn, ý em là 500 dòng và 30 cột chẳng hạn thì em phải làm sao? anh giúp em nhé ! anh là một cao thủ xin nhận lời cảm ơn chân thành từ 01 người chưa nắm gì về VBA này nghen !!! kính phục