Hỏi cách kẻ bảng tự động trong Excel có điều kiện (1 người xem)

  • Thread starter Thread starter pvtka
  • Ngày gửi Ngày gửi

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

pvtka

Thành viên mới
Tham gia
5/11/09
Bài viết
1
Được thích
0
Xin kính chào các bác!
Em học Excel hơi kém nên muốn nhờ các bác chỉ giúp một tý
Các bác làm ơn cho em hỏi làm thế nào để Excel tạo bảng có đường kẻ theo điều kiện được không? và khi thay đổi điều kiện thì các hàng đó có tự động kẻ theo không?
Điều kiện ở đây là khi mình nhập vào một ô số học sinh thì Excel sẽ tự động kẻ bảng với số dòng đúng bằng giá trị số học sinh ta nhập vào ở trên.
Cụ thể là: Mình có một bảng gồm các cột như sau:
A4 là cột thứ tự
B4 là cột Họ Và Tên
C4 là cột Lớp
D4 là cột ghi chú
Ví dụ: Ở ô C2 ta nhập số học sinh là 10
Thì Excel sẽ tự động kẻ bảng có 10 dòng kể từ ô A5 đến ô D14
Và khi thay số Học sinh là 5 thì Excel cũng tự động xóa bảng cũ và kẻ bảng mới với 5 dòng tương ứng.
Em có kèm tập tin minh họa. Xin các bác giúp đỡ em.
Em xin chân thành cảm ơn!
 
Lần chỉnh sửa cuối:
Chép code này vào Sheet cần thực hiện kẻ dòng

PHP:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Range("C2") > 0 Then
        m = Sheet1.Rows("5:100").Delete
        n = Range("C2") + 4
        With Sheet1.Range("A5:D" & n)
            .Borders(xlEdgeBottom).LineStyle = xlContinuous
            .Borders(xlEdgeLeft).LineStyle = xlContinuous
            .Borders(xlEdgeRight).LineStyle = xlContinuous
            .Borders(xlEdgeTop).LineStyle = xlContinuous
            .Borders(xlInsideHorizontal).LineStyle = xlContinuous
            .Borders(xlInsideVertical).LineStyle = xlContinuous
        End With
    End If
End Sub


Thay Sheet1 bằng cái mà bạn muốn
Xem file kèm theo
Thân
 

File đính kèm

Thanh Phương

mình nghĩ bạn nên đổi sự kiện Selectionchange =>change kết hợp điều kiện target.address= range("c2").address =>tránh trường hợp excel sẽ phải thực hiện bài toán mỗi khi có thay đổi lựa chọn.
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = Range("c2").Address Then
If Range("C2") > 0 Then
m = Sheet1.Rows("5:100").Delete
n = Range("C2") + 4
With Sheet1.Range("A5:D" & n)
.Borders(xlEdgeBottom).LineStyle = xlContinuous
.Borders(xlEdgeLeft).LineStyle = xlContinuous
.Borders(xlEdgeRight).LineStyle = xlContinuous
.Borders(xlEdgeTop).LineStyle = xlContinuous
.Borders(xlInsideHorizontal).LineStyle = xlContinuous
.Borders(xlInsideVertical).LineStyle = xlContinuous
End With
End If
End If
End Sub
 
Sao không ai làm bài này bằng Conditional Formating thế nhỉ? ---> Quá dể để thực hiện (sao phải code)
 
Sử dụng: Format/Conditional Formating/
Như vd.
 

File đính kèm

Cách cột: tức là có dữ liệu ở cột c thì điều kiện định dạng dòng kẻ vẫn được thự hiện.
 

File đính kèm

Tôi cũng làm theo bac bate và các bác khác nhưng sa không được, các bác xem hộ tôi xem bị lỗi ở đâu?
 

File đính kèm

nếu muốn các cột J,L,M giữ nguyên mầu thì làm thế nào các bác nhỉ?còn muốn giữ nguyên công thức các ô phía trên thì lam fthees nào? mong các bác giúp nhe.
 
Lần chỉnh sửa cuối:
Bạn nhập công thức này vào Conditional Formatting :
=(ROW()-6)<=$C$6
Còn giữ nguyên màu 3 cột kia có điều kiện gì không (Ví dụ như phải có dữ liệu hay lớn hơn 1 số nào đó.....)?Có thì nêu điều kiện ra và dùng Conditional Formatting tiếp, Nếu không có thì tô màu bình thường thôi! He he!
 
Lần chỉnh sửa cuối:
Tôi cũng làm theo bac bate và các bác khác nhưng sa không được, các bác xem hộ tôi xem bị lỗi ở đâu?
1. Công thức bạn nhập vào sai
Conditional Formatting.gif

=$C$6 chứ không phải là $C$33
2. Bạn chưa chọn Format để định dạng
nếu muốn các cột J,L,M giữ nguyên mầu thì làm thế nào các bác nhỉ?còn muốn giữ nguyên công thức các ô phía trên thì lam fthees nào? mong các bác giúp nhe.
Bạn chọn Cell bình thường khác sau đó Chọn biểu tượng Fornat Painer để quét các ô không cần bôi màu Hoặc bạn quét các ô không cần bôi màu ấy vào Conditional Formatting để xóa
 
Lần chỉnh sửa cuối:
1. Công thức bạn nhập vào sai
View attachment 67582

=$C$2 chứ không phải là $C$33
2. Bạn chưa chọn Format để định dạng

Bạn chọn Cell bình thường khác sau đó Chọn biểu tượng Fornat Painer để quét các ô không cần bôi màu Hoặc bạn quét các ô không cần bôi màu ấy vào Format Conditional để xóa
Em thấy trong file bạn ấy định thay đổi số ô định dạng là trong ô C6 mà, không phải ô C3 như hình bác Bate đã làm anh ạ!
 
vậy các bác choem hỏi muốn giữ nguyên công thức trong ô khi có ô mới thì làm thế nào
 
vậy các bác choem hỏi muốn giữ nguyên công thức trong ô khi có ô mới thì làm thế nào
Ô nào bạn đã định dạng được như ý rồi thì bạn chọn ô đó sau đó kích vào Format Painer (hình cái chổi) và bôi quét các cells cần định dạng
 
Em nhờ các bác viết cho em code kẻ bảng cách dòng (theo một quy luật) đến hết bảng (hàng và cột của bảng có thể thay đổi). Em cảm ơn các bác!
upload_2017-11-17_16-4-45.png
 
Cái bảng trống trơn dữ liệu mà kẻ làm gì cho fí mực!
Hình như bạn muốn kể đến dòng 16 khi dữ liệu cuối thuộc dòng 14, hay 15 hoặc 16, f ải không?

Mình đề xuất cách này:

Dữ liệu thường tối đa là 106 dòng (chẳng hạn)
Ta kẻ hẵn 135 dòng theo í (của bạn)

Sau khi "đổ" dữ liệu vô; ta dùng macro xác định dòng cuối có dữ liệu
Bước cuối là ẩn dòng (mà chỉ số dòng chia hết cho 3 & cọng thêm 1) lớn hơn dòng cuối vừa xác định cho tới dòng 135

Vậy được hông?
 
Hi thank bác.
Mực của em nhiều nên các bác cứ kẻ thoải mái.
Em up file lên để các bác xem, trong file em muốn kẻ đường nét đứt đó theo quy luật như trong file và đến hết bảng (dòng cuối bảng có thể thay đổi và cột cũng có thể thay đổi)
 

File đính kèm

Cũng phải sửa nhiều đấy bạn, xóa đi tính lại cũng nhiều nên muốn dùng VBA để tự động.
 
Các bác cho em hỏi trong VBA làm sao mình có thể kẻ được các đường kẻ nét đứt theo ý mình ạ, e có record macro nhưng chưa hiểu lắm, bác nào giúp em với ạ, em cảm ơn!
giaiphapex.JPG
 
Các bác cho em hỏi trong VBA làm sao mình có thể kẻ được các đường kẻ nét đứt theo ý mình ạ, e có record macro nhưng chưa hiểu lắm, bác nào giúp em với ạ, em cảm ơn!
Góp ý cho bạn:
Muốn làm cái gì đó thì nên đính kèm File và nêu rõ thực hiện trên sheet nào để người xem dòng bắt đầu từ đâu, cấu trúc nó thế nào chứ đưa cái hình chỉ để nhìn cho vui thôi. Muốn thử code thì lấy cái gì để thử?
 
Các bác cho em hỏi trong VBA làm sao mình có thể kẻ được các đường kẻ nét đứt theo ý mình ạ, e có record macro nhưng chưa hiểu lắm, bác nào giúp em với ạ, em cảm ơn!
View attachment 238183
Bạn thử code sau nhé:
PHP:
Sub zaq()
    Dim lastRow As Long
    lastRow = Range("B" & Rows.Count).End(xlUp).Row
      With Sheet1
      .Range("A1: H" & lastRow).Borders.LineStyle = 1
      .Range("A2: H" & lastRow - 1).Borders(xlInsideHorizontal).Weight = xlHairline
     End With
End Sub
 
Góp ý cho bạn:
Muốn làm cái gì đó thì nên đính kèm File và nêu rõ thực hiện trên sheet nào để người xem dòng bắt đầu từ đâu, cấu trúc nó thế nào chứ đưa cái hình chỉ để nhìn cho vui thôi. Muốn thử code thì lấy cái gì để thử?
Bạn thử code sau nhé:
PHP:
Sub zaq()
    Dim lastRow As Long
    lastRow = Range("B" & Rows.Count).End(xlUp).Row
      With Sheet1
      .Range("A1: H" & lastRow).Borders.LineStyle = 1
      .Range("A2: H" & lastRow - 1).Borders(xlInsideHorizontal).Weight = xlHairline
     End With
End Sub
Em làm được rồi ạ, cảm ơn bác rất nhiều!
 

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

Back
Top Bottom