đổi số liệu từ cột sang dòng? (1 người xem)

  • Thread starter Thread starter solomon
  • Ngày gửi Ngày gửi
Liên hệ QC

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

solomon

Thành viên mới
Tham gia
17/11/07
Bài viết
8
Được thích
1
đổi số liệu từ cột sang dòng. có file đính kèm.thanks
 

File đính kèm

Dùng Transpose là OK, nhưng hình như theo như trong ví dụ của bạn thì nó không có ý nghĩa lắm. Cột Day và cột Code làm sao mà tương ứng được với nhau???
 
Đổ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
 
Đổ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
 

File đính kèm

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

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
 
Chỉnh sửa lần cuối bởi điều hành viê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.
 
Lần chỉnh sửa cuối:
anh có thể ví dụ cho em không ? em nghĩ đến hướng if(qty=có,show(code&qty,hide row? anh cho em phương hướng giải quyết đi. Thanks

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.

anh cho ví dụ lấy ngày làm chuẩn đi. cảm ơn nhiều

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 xa
tâm hồn tôi vui chẳng vui , buồn chẳng buồn
xin hãy giúp và hãy mến thương tôi
như tình thương giữa người và người
cho đời lính......."Trọn niềm vui".....
 
Chỉnh sửa lần cuối bởi điều hành viên:
Hướng dẫn sử dụng trước khi dùng

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

Công thức mình nghĩ chưa ra, code thì đây:
PHP:
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

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ả.
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!
 

File đính kèm

Lần chỉnh sửa cuối:
Nếu bạn chấp nhận dùng VBA thì thử code này (tôi thấy đơn giãn hơn dùng công thức rất nhiều)
PHP:
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
 

File đính kèm

Công thức mình nghĩ chưa ra, code thì đây:
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
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ả.
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!
Kiệt ơi, lúc InputBox hiện ra chẳng lẽ phải gõ địa chỉ vào à?
 
To ndu96081631:
Thiệt nể anh cái vụ CurrentRegion. Em học hoài mà vẫn quên hoài! Thanks.

Kiệt ơi, lúc InputBox hiện ra chẳng lẽ phải gõ địa chỉ vào à?
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 B3:D9 thôi. thì chỉ cần gõ vào B3:D9. Code này sẽ tự động hiểu tên sheet là tên sheet hiện hành.
 
Lần chỉnh sửa cuối:
Kiệ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!
PHP:
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
Thân.
 
Lần chỉnh sửa cuối:
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
 
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
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ử!
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)
 
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ử!
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
 
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

Nếu sử dụng code của mình đã chỉnh sửa, bổ sung ý của Po_Pikachu, khi InputBox hiện ra, bạn chỉ cần quét chọn lại vùng cần chuyển đổi là được mà!
 
Tôi sửa lại file (trích sang sheet khác) cho bạn dể thấy
Nếu vùng dử liệu và tên sheet của bạn không giống trong file thì đơn giãn là bấm Alt + F11 vào sửa lại code cho phù hợp nhé
Hoặc đơn giãn hơn nữa là bạn copy dử liệu và paste vào sheet Dulieu, cell B3 trong file của tôi rồi chạy code là xong!
 

File đính kèm

Vẫn dùng công thức được đấy chứ các bạn!

Mình cũng biết chút chút về Excel nhưng ko biết nhiều về VBA. Vì vậy, hầu như tất cả mọi vấn đề mình đều cố gắng thực hiện bằng công thức. Với đề bài này cũng vậy, thực hiện hoàn toàn bằng công thức.

Các bạn xem file đính kèm và cho ý kiến nha.
P/S: Các bạn có thể thêm vài Code, vài ngày vào sheet CSDL để kiểm tra độ chính xác.
 

File đính kèm

Web KT

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

Back
Top Bottom