Hỏi về merge hai cột nhưng không bị mất dữ liệu

Liên hệ QC

kidoto

Thành viên mới
Tham gia
18/12/07
Bài viết
19
Được thích
3
Chào các anh chị và mọi người.
Mình muốn hỏi khi Merge hai cột thì làm thế nào có thể giử được dữ liệu của hai cột, các dòng thì không bị merge lại (vì merge từng dòng thì nhiều lắm).

Tiện thể mình hỏi luôn, các anh chị hoặc các bạn có thể chỉ cho mình hướng để tự tìm hiểu Excel thêm được ko? Ebook cơ bản thì mình đã đọc rồi, còn kiến thức tổng quát như thế này thì mình nghĩ là phải có thời gian, nhưng mà dầu sao có cái gì để nghiên cứu tổng quát trước vẫn căn bản hơn, vì mỗi thắc mắc mỗi hỏi thì thứ nhất là tốn thời gian của các anh chị, thứ hai là kiến thức mình có được là sự góp nhặt, cho nên khó phát triển lắm.

Mình rất cảm ơn mọi sự giúp đỡ của mọi người.
 
Chào các anh chị và mọi người.
Mình muốn hỏi khi Merge hai cột thì làm thế nào có thể giử được dữ liệu của hai cột, các dòng thì không bị merge lại (vì merge từng dòng thì nhiều lắm).

Tiện thể mình hỏi luôn, các anh chị hoặc các bạn có thể chỉ cho mình hướng để tự tìm hiểu Excel thêm được ko? Ebook cơ bản thì mình đã đọc rồi, còn kiến thức tổng quát như thế này thì mình nghĩ là phải có thời gian, nhưng mà dầu sao có cái gì để nghiên cứu tổng quát trước vẫn căn bản hơn, vì mỗi thắc mắc mỗi hỏi thì thứ nhất là tốn thời gian của các anh chị, thứ hai là kiến thức mình có được là sự góp nhặt, cho nên khó phát triển lắm.

Mình rất cảm ơn mọi sự giúp đỡ của mọi người.

Bạn đọc thông báo của Microsoft nha!

when you merge cells together and more than one of those cells contains data. In Excel, merging is the process of creating one cell out of two or more selected cells. When you merge cells and more than one of the selected cells contains data, Excel keeps the data in the upper-left cell and deletes all remaining data.
và:
When you merge multiple cells, the contents of only one cell (the upper-left cell for left-to-right languages, or the upper-right cell for right-to-left languages) appear in the merged cell
Nguồn: http://office.microsoft.com/en-us/help/HP012163921033.aspx
 
Cảm ơn anh (chị?) TKT.
Như vậy,TKT đã khuyên em cách tốt nhất để vọc Excel đó là:
+ F1
+ Search Online
Đương nhiên phần còn lại đó là: tự mày mò. Thanks TKT nhiều lắm.
Đúng là: Trên con đường thành công, không có dấu chân của kẻ làm biếng.
--------------
 
Có thể dùng macro?

Mình nghĩ lại rồi, có thể làm được bằng macro, hướng như thế này:
1:
PHP:
Sub MergeCols( introws as Long) 
        '// introws: so dòng cần merge
 
End sub


2.bmp

Trong đó, bên trong hàm sẽ khai bao 2 mảng X(), Y() để lưu lại thông tin của hai cột cần Merge.
Sau đó ghép hài chuổi này lại, cho vào row vừa mới Merge xong.
Mọi người nghĩ em làm thế được không?
Có điều VBA còn đang mò mẩm nên chưa code được, hẹn mọi người em sẽ viết cái hàm này sau khi có đủ kiến thức vậy (hay là anh nào viết được thì cho bà con tham khảo trước hen ^-^ |||||)
 
Lần chỉnh sửa cuối:
Được chứ bạn, cái này trong tầm tay, vì nhiều người làm được thì chắc chắn bạn sẽ làm được. Nếu bạn muốn.
You can win if you want
bài hát của nhóm Modern Talking
tieulongnu cung muon hoc vb lắm. Nhung thấy mình công thức còn dỡ nên chưa nghĩ tới anh chàng VB này, chỉ vài năm mài mò công thức xong, tieulongnu nhất quyết sẽ học vb.
 
Được chứ bạn, cái này trong tầm tay, vì nhiều người làm được thì chắc chắn bạn sẽ làm được. Nếu bạn muốn.
You can win if you want
bài hát của nhóm Modern Talking
tieulongnu cung muon hoc vb lắm. Nhung thấy mình công thức còn dỡ nên chưa nghĩ tới anh chàng VB này, chỉ vài năm mài mò công thức xong, tieulongnu nhất quyết sẽ học vb.

Cảm ơn Tieulongnu đã ủng hộ.
Mình vừa mới code xong, nhưng mình không biết làm thế nào để Excel không thông báo mỗi khi merge cả.

PHP:
Sub MergeCells()
    Dim n As Long, i As Long, m As Long, strNoichuoi As String
    Dim actCol As Long, actRow As Long
    On Error GoTo ErrorHandle
    If ActiveWindow.RangeSelection.Count = 1 Then
        Exit Sub
    End If
    n = UBound(ActiveWindow.RangeSelection.Value2, 1)
    m = UBound(ActiveWindow.RangeSelection.Value2, 2)
    actCol = ActiveWindow.RangeSelection.Column
    actRow = ActiveWindow.RangeSelection.Row
 
    Range(Cells(actRow, actCol), Cells(actRow, actCol + m - 1)).Select
    For i = 1 To n
        For j = 1 To m
            strNoichuoi = strNoichuoi & ActiveWindow.RangeSelection.Value2(1, j)
        Next
        Range(Cells(actRow + i - 1, actCol), Cells(actRow + i - 1, actCol + m - 1)).Select
        Selection.Merge
        Range(Cells(actRow + i - 1, actCol), Cells(actRow + i - 1, actCol + m - 1)).Value = strNoichuoi
        strNoichuoi = ""
        Range(Cells(actRow + i, actCol), Cells(actRow + i, actCol + m - 1)).Select
    Next
    Exit Sub
ErrorHandle:
    MsgBox Err.Description
    Err.Clear
End Sub


Các anh chị góp ý hen, ví dụ : làm thế nào để bỏ thông báo của MS khi bị Merge, hay là code em viết dở wá (hì, Newbies thì dở = bình thường). Thanks.
 
Lần chỉnh sửa cuối:
Bạn thử với phương án mình đề xuất xem sao?

PHP:
Sub Merge2Col()
 Dim lRw As Long, Ww As Long
 lRw = [B65535].End(xlUp).Row
 For Ww = 2 To lRw
    With Cells(Ww, "B")
        .Value = .Value & " " & .Offset(, 1).Value
    End With
 Next Ww
8
End Sub
:-=
Sau dòng lệnh 8 bạn có thể xóa cột 'C' đi hay trộn hai cột dữ liệu 'B' & 'C' theo sở thích!
 
PHP:
        Selection.Clear
        Selection.Merge
uhm. Mình hiểu rồi, ecec, vậy mà mình ko nghĩ ra, thank bạn ChanhTQ@ hen.
 
Lần chỉnh sửa cuối:
Web KT
Back
Top Bottom