Làm sao để tự động tạo cột sort cho 1 cột khác

Liên hệ QC

DKhanh1111

Thành viên mới
Tham gia
27/8/10
Bài viết
13
Được thích
2
Sheet A có cột A là các số nhập vào.
Sheet B cũng có cột A là các số nhập vào.

Làm sao để tạo Sheet C thoả điều kiện:
1. có cột A chứa các số của cột A ở sheet A lẫn sheet B,
2. được sắp sếp.
3. Các số từ sheet A sẽ màu đỏ, số từ Sheet B sẽ màu xanh.
4. Và mỗi khi thêm số vào ở SheetA hay sheet B thì bên Sheet C cũng tự động update.
5. Sheet C bị lock không cho chỉnh sửa.

vd sheet A
A
--
3
2
1
4

sheet B là
A
--
7
5
0
2

thì sheet C sẽ là
A
--
0 (xanh)
1 (đỏ)
2 (đỏ)
2 (xanh)
3 (đỏ)
4 (đỏ)
5 (xanh)
7 (xanh)

Cám ơn!
 
Lần chỉnh sửa cuối:
Dùng VBA nha bạn.
Bạn xóa bài #2 không cần thiết đi nha.

sheetA

PHP:
Sub worksheet_change(ByVal target As Range)
Application.ScreenUpdating = False
On Error Resume Next
With Sheets("SheetC")
    If target.Column = 1 And Trim(target.Value) <> "" Then
        .Unprotect
        .[A65536].End(xlUp).Offset(1) = target.Value
        .[A65536].End(xlUp).Font.ColorIndex = 3
        .Protect
    End If
End With
Application.ScreenUpdating = True
End Sub


sheetB :
PHP:
Sub worksheet_change(ByVal target As Range)
Application.ScreenUpdating = False
On Error Resume Next
With Sheets("SheetC")
    If target.Column = 1 And Trim(target.Value) <> "" Then
        .Unprotect
        .[A65536].End(xlUp).Offset(1) = target.Value
        .[A65536].End(xlUp).Font.ColorIndex = 5
        .Protect
    End If
End With
Application.ScreenUpdating = True
End Sub
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Cảm ơn bạn, nó tự add được qua sheet 3 nhưng chưa có sort được.
 
Upvote 0
Cảm ơn bạn, nó tự add được qua sheet 3 nhưng chưa có sort được.

Sửa lại chút :

SheetA :
PHP:
Sub worksheet_change(ByVal target As Range)
Application.ScreenUpdating = False
On Error Resume Next
With Sheets("SheetC")
    If target.Column = 1 And Trim(target.Value) <> "" Then
        .Unprotect
        .[A65536].End(xlUp).Offset(1) = target.Value
        .[A65536].End(xlUp).Font.ColorIndex = 3
        .[A2:A65536].Sort Key1:=.[A2], Order1:=xlAscending
        .Protect
    End If
End With
Application.ScreenUpdating = True
End Sub

SheetB :
PHP:
Sub worksheet_change(ByVal target As Range)
Application.ScreenUpdating = False
On Error Resume Next
With Sheets("SheetC")
    If target.Column = 1 And Trim(target.Value) <> "" Then
        .Unprotect
        .[A65536].End(xlUp).Offset(1) = target.Value
        .[A65536].End(xlUp).Font.ColorIndex = 5
        .[A2:A65536].Sort Key1:=.[A2], Order1:=xlAscending
        .Protect
    End If
End With
Application.ScreenUpdating = True
End Sub
 

File đính kèm

Upvote 0
Sửa lại chút :

SheetA :
PHP:
Sub worksheet_change(ByVal target As Range)
Application.ScreenUpdating = False
On Error Resume Next
With Sheets("SheetC")
    If target.Column = 1 And Trim(target.Value) <> "" Then
        .Unprotect
        .[A65536].End(xlUp).Offset(1) = target.Value
        .[A65536].End(xlUp).Font.ColorIndex = 3
        .[A2:A65536].Sort Key1:=.[A2], Order1:=xlAscending
        .Protect
    End If
End With
Application.ScreenUpdating = True
End Sub
SheetB :
PHP:
Sub worksheet_change(ByVal target As Range)
Application.ScreenUpdating = False
On Error Resume Next
With Sheets("SheetC")
    If target.Column = 1 And Trim(target.Value) <> "" Then
        .Unprotect
        .[A65536].End(xlUp).Offset(1) = target.Value
        .[A65536].End(xlUp).Font.ColorIndex = 5
        .[A2:A65536].Sort Key1:=.[A2], Order1:=xlAscending
        .Protect
    End If
End With
Application.ScreenUpdating = True
End Sub
Hoàng Danh nên đưa code vào sự kiện Activate của sheet C sẽ gọn và nhanh hơn
Thử nghĩ:
- Cứ mỗi lần nhập là code chạy, thật không hay tí nào
- Khi nào cần xem, ta mới chuyển sang sheet C, khi ấy code chạy cũng không muộn
 
Upvote 0
xoá đi nó không mất bên sheetC, code của bạn nó chỉ add vào thôi.
 
Upvote 0
xoá đi nó không mất bên sheetC, code của bạn nó chỉ add vào thôi.

theo :
Làm sao để tự động tạo cột sort cho 1 cột khác

Sheet A có cột A là các số nhập vào.
Sheet B cũng có cột A là các số nhập vào.

Làm sao để tạo Sheet C thoả điều kiện:
1. có cột A chứa các số của cột A ở sheet A lẫn sheet B,
2. được sắp sếp.
3. Các số từ sheet A sẽ màu đỏ, số từ Sheet B sẽ màu xanh.
4. Và mỗi khi thêm số vào ở SheetA hay sheet B thì bên Sheet C cũng tự động update.
5. Sheet C bị lock không cho chỉnh sửa.
Không có chổ nào nhắc đến khi xóa dữ liệu thi SheetC se update cả.
Làm thì vẫn được nhưng code sẽ phức tạp và có cần thiết như thế không.
 
Upvote 0
Thì ý mình là sheet C cập nhật dữ liệu ở 2 sheet kia thôi, nếu bạn đầu mình nói không rõ ràng thì giờ mình nói thêm, có gì đâu mà bạn lại bới móc trích dẫn này nọ ra vậy?

Phức tạp hay không là ở cách khả năng bạn code tới đâu thôi.

Mình không rành VBA lắm, nhưng cũng biết cơ bản về lập trình, theo như bạn ndu96081631 nói thì sẽ viết vào sự kiện khi chuyển qua sheet C, như vậy, ta chỉ cần làm 3 bước:
1. xoá tất cả nội dung ở sheet C
2. Add nguyên cột dữ liệu column A của Sheet A vào
3. add tương tự cho sheetB
4. short column A của sheet C

Nhưng nếu làm trong sự kiện sheet_active thì sẽ thấy nó chớp chớp khi chuyển qua, còn nếu cập nhật ngay lúc thêm số thì sẽ mượt hơn, mỗi cách có 1 ưu khuyét điểm
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT

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

Back
Top Bottom