Border theo số lần xuất hiện của data.

Liên hệ QC
Tôi tuân thủ nội quy khi đăng bài

Đỗ Quân

Thành viên chính thức
Tham gia
14/7/18
Bài viết
50
Được thích
4
Em chào anh chị a !
E có một file dữ liệu ở bảng số 1, ở cột Tham số có data xuất hiện 1 hoăc nhiều lần. Giờ em muốn tạo vba border hàng theo số lần xuất hiện của data.(data này là data động sẽ thay đổi)
Ý em muốn Border giống như ở bảng số 2 ạ. Khi nào mình thay đổi data chỉ cần click vba là sẽ tự border ạ.
Rất mong nhận đc sự giúp đỡ từ ac ạ.
Ac check file đính kèm giúp e ạ.
Em cảm ơn !
 

File đính kèm

  • Border.xlsm
    11.3 KB · Đọc: 16
Em chào anh chị a !
E có một file dữ liệu ở bảng số 1, ở cột Tham số có data xuất hiện 1 hoăc nhiều lần. Giờ em muốn tạo vba border hàng theo số lần xuất hiện của data.(data này là data động sẽ thay đổi)
Ý em muốn Border giống như ở bảng số 2 ạ. Khi nào mình thay đổi data chỉ cần click vba là sẽ tự border ạ.
Rất mong nhận đc sự giúp đỡ từ ac ạ.
Ac check file đính kèm giúp e ạ.
Em cảm ơn !
Chưa hiểu ý bạn lắm. Mô tả thêm chút được không nào
 
Upvote 0
Dùng Conditional Formatting cho nhanh bạn, công thức trong đó là =B6<>B5 với vùng chọn là $B$5:$I$25, định dạng Border gồm trái, phải, dưới (không kẻ ở trên)
 
Upvote 0
Em chào anh chị a !
E có một file dữ liệu ở bảng số 1, ở cột Tham số có data xuất hiện 1 hoăc nhiều lần. Giờ em muốn tạo vba border hàng theo số lần xuất hiện của data.(data này là data động sẽ thay đổi)
Ý em muốn Border giống như ở bảng số 2 ạ. Khi nào mình thay đổi data chỉ cần click vba là sẽ tự border ạ.
Rất mong nhận đc sự giúp đỡ từ ac ạ.
Ac check file đính kèm giúp e ạ.
Em cảm ơn !
File không có gì cả bạn ơi
 
Upvote 0
File không có gì cả bạn ơi
Xem ởn sheet 1 giúp ạ
Bài đã được tự động gộp:

Bài đã được tự động gộp:

Chưa hiểu ý bạn lắm. Mô tả thêm chút được không nào
Dạ. Ac mở file giúp e sẽ dễ hình dung hơn ạ. Ở sheet1 ạ. Ở bảng 1 là data e cần border ạ. E muốn Border giống như ở bảng 2 ạ sau mỗi lần thay đổi số lần xuất hiện ở cột tham số ạ . Đại loại giống như kiểu sẽ nhóm lại các số giống nhau của cột tham số để dễ nhìn hơn ạ.
 
Lần chỉnh sửa cuối:
Upvote 0
Chưa hiểu ý bạn lắm. Mô tả thêm chút được không nào
Tôi thấy yêu cầu rất rõ rồi mà?
Có vẻ như đang làm mờ sự trong sáng của tiếng Việt thì phải.
Mô tả rất rõ ràng ngoại trừ vài chữ viết tắt
File không có gì cả bạn ơi
Nhấn Home 1 phát ở sheet 1 xem nào!
 
Upvote 0
Dạ. Ac mở file giúp e sẽ dễ hình dung hơn ạ. Ở sheet1 ạ. Ở bảng 1 là data e cần border ạ. E muốn Border giống như ở bảng 2 ạ sau mỗi lần thay đổi số lần xuất hiện ở cột tham số ạ . Đại loại giống như kiểu sẽ nhóm lại các số giống nhau của cột tham số để dễ nhìn hơn ạ.
Đừng viết tắt bạn, đó là quy định của diễn đàn cũng như rất nhiều bác (trong đó có mình) không thích (Ví dụ: "AC" cũng được hiểu là ký hiệu của dòng điện xoay chiều, khi đó thì nội dung được đấy đi xa lắm)
Mình có gợi ý bạn dùng Conditional Formatting rồi mà, bạn không làm được hay chỉ muốn dùng VBA thôi
 
Upvote 0
Đừng viết tắt bạn, đó là quy định của diễn đàn cũng như rất nhiều bác (trong đó có mình) không thích (Ví dụ: "AC" cũng được hiểu là ký hiệu của dòng điện xoay chiều, khi đó thì nội dung được đấy đi xa lắm)
Mình có gợi ý bạn dùng Conditional Formatting rồi mà, bạn không làm được hay chỉ muốn dùng VBA thôi
Formtting thì trước đó e làm đc rồi ạ. E muốn thử trên VBA thôi ạ
 
Upvote 0
Formtting thì trước đó e làm đc rồi ạ. E muốn thử trên VBA thôi ạ
Này thì V B A
Mã:
Sub BorderAll()
Dim LastRw As Long
With Sheet1
    LastRw = .Cells(10000, 2).End(xlUp).Row
    For i = LastRw To 5 Step -1
        If .Cells(i, 2) <> .Cells(i - 1, 2) Then
            BorderRange .Cells(i, 2).Resize(k + 1, 8)
            k = 0
        Else
            k = k + 1
        End If
     Next
End With
End Sub
'----------'
Sub BorderRange(Rng As Range)
    Rng.Borders.LineStyle = 1
    Rng.Borders(12).Weight = 1
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Bác xem trong file nhé!
 

File đính kèm

  • Border.xlsm
    19.4 KB · Đọc: 7
Upvote 0
Này thì V B A
Mã:
Sub BorderAll()
Dim LastRw As Long
With Sheet1
    LastRw = .Cells(10000, 2).End(xlUp).Row
    For i = LastRw To 5 Step -1
        If .Cells(i, 2) <> .Cells(i - 1, 2) Then
            BorderRange .Cells(i, 2).Resize(k + 1, 8)
            k = 0
        Else
            k = k + 1
        End If
     Next
End With
End Sub
'----------'
Sub BorderRange(Rng As Range)
    Rng.Borders.LineStyle = 1
    Rng.Borders(12).Weight = 1
End Sub

Này thì V B A
Mã:
Sub BorderAll()
Dim LastRw As Long
With Sheet1
    LastRw = .Cells(10000, 2).End(xlUp).Row
    For i = LastRw To 5 Step -1
        If .Cells(i, 2) <> .Cells(i - 1, 2) Then
            BorderRange .Cells(i, 2).Resize(k + 1, 8)
            k = 0
        Else
            k = k + 1
        End If
     Next
End With
End Sub
'----------'
Sub BorderRange(Rng As Range)
    Rng.Borders.LineStyle = 1
    Rng.Borders(12).Weight = 1
End Sub
Vâng để e thử ạ
 
Upvote 0
Upvote 0
Upvote 0
Cái bày e ko dc rồi. (re #9)
Tôi hỏi vì tôi có 2 Sub, 1 sub chính và 1 sub con. Sub con có tham số nếu chạy trực tiếp bằng F5 thì không cho chạy

còn e kh dc thì tôi thấy bài 8 có nhắc nên tôi không nhắc trùng, biết đâu được khi đang viết và gởi thì đã xuất hiện bài 9
 
Upvote 0
Mình cho rằng vào đầu macro phải là xóa tất cả các định dạnh viền khung trước đã;
/(hông biết chủ bài đăng nghỉ sao?
 
Upvote 0
Sửa như vậy thì dòng cuối đóng khung chung với thêm 1 dòng sau dòng cuối.
Hình như cuộc đời của bạn chỉ viết code chứ không test, tôi phát hiện mấy lần.
Cái này em thấy không phải vấn đề gì lớn. vẫn đáp ứng được yêu cầu của đề bài. Phần ý thứ 2 của bác thì thử hỏi nếu như bản thân em là người viết code mà không test thì không bao giờ em có thể đi đến thời điểm hiện tại được. có điều là test không hết và test không kỹ thôi. Quay trở lại ý ở trên của bác em test phát hiện ra ý đó nhưng không sửa thôi bác.
Bài đã được tự động gộp:

Bạn chạy code nào mới được?
Đương nhiên là em chạy sub BorderAll rồi. Và sub đó không chạy thật bác nhé!
 
Upvote 0
Web KT
Back
Top Bottom