Gộp 2 Row thành 1 như thế nào?

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

nilt02

Thành viên hoạt động
Tham gia
19/3/08
Bài viết
119
Được thích
17
Giới tính
Nam
Các bác cho em hỏi chút, em muốn chập 2 row làm 1 để update số liệu thành 1 hàng duy nhất theo column Wellcode, DateQuarter.
Em xin ví dụ như thế này cho các bác hiểu ý em:
Row 2 và 3 có trùng Wellcode, date(2004) và Quarter(M), bây giờ em chập lại thành 1 row duy nhất để update dữ liệu thành 1 hàng có số liệu liên tục.
File đính kèm bên dưới.
Thank các bác đã đọc và giúp đỡ em ^^!
 
Lần chỉnh sửa cuối:
Hỏng hiểu lắm bạn ơi, "Chập" theo ý bạn có phải là Merge Cell không? Hay là liên kết giữa cột Date và Quarter? Ví dụ như Date là 2004 và Quarter là M, sau khi "chập" lại là 2004M ?
 
bác cứ open file excel ra đi ạ, em muốn chập 2 row thành 1, nhưng phải dựa theo dữ liệu 3 Column là Wellcode, Date(có 2 năm 2004), và Quarter(có 2 M) thì chập làm 1 Row có Date( 1 năm 2004) và Quarter (1 M).
Em xin phép làm bằng tay như file bên dưới cho các bác hiểu
Thank!
 
Lần chỉnh sửa cuối:
hic....có nhiều row lắm bác ạ, nếu ko em làm bằng tay rồi :(

Thứ 1 ID không chuẩn

Thứ 2, cột Date nhìn chỉ thấy là Năm, tuy nhiên chúng khác ngày, bạn thử định dạng lại là dd/mm/yyyy sẽ rõ, như vậy làm sao mà chập theo ý bạn đây? Chẳng lẽ bạn sửa chúng thành năm hết? Cái này thì dễ, nhưng coi chừng sẽ ảnh hưởng đến dữ liệu ở hàng khác. Chứ tôi thì có phương pháp cho bạn rồi, song, không dám chắc vì cái vụ định dạng tại cột date đó.

Tôi nói ID đó không chuẩn là vì bạn chưa hình dung ra cái cơ sở dữ liệu, lấy ví dụ như sau:

ID
1 2004M x y z
2 2004M a b c

Bạn nghĩ ID là 1 và 2 à? Không phải đâu nhé! ID chính là 2004M đấy! Còn 1 và 2 chẳng qua là số thứ tự mà thôi. ID là một giá trị nào đó để nhận ra được giá trị chung của một Record đó, hơi trừu tượng vì cách giải thích của tôi cũng chưa chuẩn, nhưng đại loại là vậy đó.


Nếu bạn đồng ý chuyển tất cả các định dạng dd/mm/yyyy thành chỉ là năm thôi thì tôi làm cho bạn rất nhanh theo công thức! Như 20/8/2004 thành 2004 thì làm Mã phụ rất lẹ!
 
Chỉnh sửa lần cuối bởi điều hành viên:
Đúng vậy bác ạ, cái ID chỉ là số thứ tự thôi, thực ra dữ liệu 2 row chập vào nhau thì cái nào không có nó sẽ lấp vô cell trống, còn định dạng thì chỉ cần là năm thôi bác ạ
Thank bác!
 
Đúng vậy bác ạ, cái ID chỉ là số thứ tự thôi, thực ra dữ liệu 2 row chập vào nhau thì cái nào không có nó sẽ lấp vô cell trống, còn định dạng thì chỉ cần là năm thôi bác ạ
Thank bác!

Insert cột phụ (id phụ). chọn cột phụ từ A2:A14 để làm name (CotID), làm name thứ 2 từ a2:e14 (Bang). Vào data, chọn advandce filter, list range = A1:A14, criteria =A1, check vào unique records only, sau khi filter, copy cột ID phụ (những cái còn hiện lên) vào cell A20 để có những id không trùng phần còn lại, theo từng cột bạn cứ kiểm tra sẽ thấy công thức của nó như thế nào.
 

File đính kèm

Lần chỉnh sửa cuối:
Mình xài macro chép sang trang mới

PHP:
Option Explicit
Sub ChapDòng()
 Dim Sh As Worksheet, Rng As Range, Cls As Range
 Dim Cot As Byte, Jj As Byte
 
 Set Sh = Sheets("Chap"):                                   Sheets("Data").Select
 Set Rng = Range([A1], [iv1].End(xlToLeft)):                Cot = Rng.Count
 Sh.[A1].Resize(, Cot).Value = Rng.Value
 Sh.[b2].Resize([b65500].End(xlUp).Row, Cot).ClearContents
 For Each Cls In Range([b2], [b65500].End(xlUp)).Offset(1)
   If Cls.Value = Cls.Offset(-1).Value And Cls.Offset(, 2) = Cls.Offset(-1, 2) _
      And Year(Cls.Offset(, 1).Value) = Year(Cls.Offset(-1, 1).Value) Then
      With Sh.[b65500].End(xlUp).Offset(1)
         .Resize(, 3).Value = Cls.Offset(-1).Resize(, 3).Value
         For Jj = 3 To Cot
            .Offset(, Jj).Value = Cls.Offset(-1, Jj).Value & Cls.Offset(, Jj).Value
            .Interior.ColorIndex = 35
         Next Jj
      End With
   Else
      If Cls <> Cls.Offset(1) Or Cls.Offset(, 2).Value <> Cls.Offset(1, 2).Value _
         Or Year(Cls.Offset(, 1).Value) <> Year(Cls.Offset(1, 1).Value) Then
         Sh.[b65500].End(xlUp).Offset(1).Resize(, Cot).Value = Cls.Resize(, Cot).Value
      End If:                                               End If
 Next Cls
End Sub
 

File đính kèm

Bác ạ, cái trên em để Wellcode chỉ 1 loại, với nhiều wellcode khác như file đính kèm bên dưới hình như không được?
Bác xem cho em với ^^
Thank bác rất nhiều ạ!
 
Bác ạ, cái trên em để Wellcode chỉ 1 loại, với nhiều wellcode khác như file đính kèm bên dưới hình như không được?
Bác xem cho em với ^^
Thank bác rất nhiều ạ!
Bài này chắc phải "chơi" VBA xử nó thôi, mình nghĩ thế này không biết đúng không
1)- Chỉ có 2 "râu" trùng nhau (sẽ có nhiều cặp, nhưng không trùng 3, hoặc 4 row)
2)- Khi đã trùng nhau thì dữ liệu trong 2 row đó không trùng cột- Thí dụ: "râu" 10 & 11 trùng thì cột nào dữ liệu row 10 có thì row 11 không có
Nếu đúng thế bạn có thể dùng cái này "thịt" nó
( Chép dữ liệu qua sheet khác bấm Ctrl + m để "thịt" nó và kiểm tra trúng trật nữa nhé, mình kiểm sơ sơ thôi)
 

File đính kèm

Vẫn không phải bác ạ, row 10 và 11 của em ko trùng Quarter. Thứ tự điều kiện ưu tiên khi chập là: Wellcode trùng nhau-->Date trùng năm-->Quarter (trùng K hoặc M), mục đích của em là cho nó về mỗi năm 1K và 1M (M=mưa, K=Khô). Em xin ví dụ như sau:
Tại Row 17,18 có trùng nhau hết cả Wellcode,Date,Quarter==>chập vào 1 row duy nhất, gần như chỉ là update số liệu vào phần trống của nhau.
 
Vẫn không phải bác ạ, row 10 và 11 của em ko trùng Quarter. Thứ tự điều kiện ưu tiên khi chập là: Wellcode trùng nhau-->Date trùng năm-->Quarter (trùng K hoặc M), mục đích của em là cho nó về mỗi năm 1K và 1M (M=mưa, K=Khô). Em xin ví dụ như sau:
Tại Row 17,18 có trùng nhau hết cả Wellcode,Date,Quarter==>chập vào 1 row duy nhất, gần như chỉ là update số liệu vào phần trống của nhau.
Híc, chán bạn quá, bạn chẳng kiểm "cha" kiểm "mẹ" gì cả ( row 10& 11 là mình thí dụ thôi)
Trong bài của bạn "râu" 17 & 18 trùng, mang số ID 324 & 409, mình gom dữ liệu 2 thằng lại, xóa thằng ID 409 chỉ còn "thằng" ID 324 thôi đó.
Bạn chú ý, khi thịt những thằng trùng mình phải sort dữ liệu theo 3 cột, WellCode, Date, Quarter nên sau khi gom dữ liệu nó sẽ nằm theo thứ tự đó
Thân
Híc
Dữ liệu của bạn có 1408 hàng
Sau khi gom còn 1028 hàng
 
Lần chỉnh sửa cuối:
hic...bác nói phải, tại em thấy bác ví dụ cứ tưởng nhìn vào row ^^, em đang kiểm tra, thấy có vẻ ổn lắm, thank bác nhiều lắm cơ ạ :)
 
Bác ạ, cái trên em để Wellcode chỉ 1 loại, với nhiều wellcode khác như file đính kèm bên dưới hình như không được? Bác xem cho
Bạn fải thêm 1 trang tính trắng & ấn cho nó cái tên "Chap"; còn trang tính chứa dữ liệu thì:

Hoặc đổi sang tên "Data" như file đính kèm ban đầu của bạn

Hoặc vô macro đổi chữ 'Data' trong chương trình thành tên mà trang tính chứa dữ liệu của bạn đang mang.


Mình mới chạy thử xong; kết quả ra 1037 dòng (kể cả tiêu đề)

Bạn thêm dòng lệnh này
PHP:
      Cls.Interior.ColorIndex = 38

vô trước dòng :
Mã:
      With Sh.[b65500].End(xlUp).Offset(1)

& kiểm theo màu cho tiện



Hình như bạn chưa dịch được ngôn ngữ macro sang tiếng Việt thỉ fải!
 
Chỉnh sửa lần cuối bởi điều hành viên:
Web KT

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

Back
Top Bottom