Tự động tinh chỉnh chiều cao dòng so với text trong ô đó!

Liên hệ QC

ducbeohn

Thành viên mới
Tham gia
21/3/08
Bài viết
4
Được thích
1
Hôm nay, mình có một việc rất khó giải quyết. Mình đã tìm hết cả google rùi, cả tiếng anh lẫn tiếng việt (chắc trình độ search hơi kém) mà vẫn không tìm ra cách giải quyết vấn đề này. Bây giờ bạn có một sheet gồm rất nhiều trang phải in (hơn 100 trang), mà phải thay đổi format cho chuẩn. Yêu cầu của sếp mình là thế này, khoảng cách từ text trong ô 1 ô cell đến dòng kẻ trên và dòng kẻ dưới của ô đó phải giống nhau trong tất cả các dòng (tất nhiên các text trong ô cell đó đã căn giữa theo phương đứng rùi). Nếu làm bằng tay thì die luồn vì sheet này có hơn 3000 dòng, chỉnh từng tí một vừa lâu lại còn không chính xác.
Các bạn giúp mình nha.
Mình cảm ơn rất nhiều.
 
Hôm nay, mình có một việc rất khó giải quyết. Mình đã tìm hết cả google rùi, cả tiếng anh lẫn tiếng việt (chắc trình độ search hơi kém) mà vẫn không tìm ra cách giải quyết vấn đề này. Bây giờ bạn có một sheet gồm rất nhiều trang phải in (hơn 100 trang), mà phải thay đổi format cho chuẩn. Yêu cầu của sếp mình là thế này, khoảng cách từ text trong ô 1 ô cell đến dòng kẻ trên và dòng kẻ dưới của ô đó phải giống nhau trong tất cả các dòng (tất nhiên các text trong ô cell đó đã căn giữa theo phương đứng rùi). Nếu làm bằng tay thì die luồn vì sheet này có hơn 3000 dòng, chỉnh từng tí một vừa lâu lại còn không chính xác.
Các bạn giúp mình nha.
Mình cảm ơn rất nhiều.
Chưa hiểu lắm ??
Nếu bạn đã canh giữa theo chiều dọc rồi thì chỉ việc:
- Click chọn vào tiêu đề dòng của dòng đầu tiên
- Kéo thanh trượt xuống, bấm giữa phím Shift rồi dùng chuột chọn vào tiêu đề dòng của dòng cuối
- Canh độ rộng của dòng 1 lần cho 3000 dòng (dùng chuột chỉnh hoặc vào menu Format\Row\Height)
Có vấn đề gì đâu chứ
 
Bạn Ctr A, đưa con trỏ đến lề bên trái cho đến khi nó hiện ra mũi tên 2 chiều lên xuống rồi nháy đúp
Nó sẽ tự căn lề trên dưới đều nhau cho bạn
Have fun
 
Bạn vào format=>cell trong tab alignment phần vertical chọn center là ok.
 
Nếu đơn giản thế thì mình đâu cần hỏi. Cái mình hỏi ở đây là: sau khi đã bôi đen hàng, rùi autofit, lúc này cái format của excel không được đẹp lắm vì đường kẻ dưới rất sát với chữ. Mình muốn là đường kẻ dưới nó cách chữ một khoảng cách nào đó (có thể do mình tự đặt ra). Bình thường, mình phải vào ô đó, rùi dùng chuột kéo xuống một khoảng thì nó sẽ đẹp hơn. Nhưng để làm cho rất nhiều dòng thì thật là mệt.
 
Vậy thì vào format=>row=>height. Thích cao thấp bao nhiêu là tuỳ.
 
Nếu đơn giản thế thì mình đâu cần hỏi. Cái mình hỏi ở đây là: sau khi đã bôi đen hàng, rùi autofit, lúc này cái format của excel không được đẹp lắm vì đường kẻ dưới rất sát với chữ. Mình muốn là đường kẻ dưới nó cách chữ một khoảng cách nào đó (có thể do mình tự đặt ra). Bình thường, mình phải vào ô đó, rùi dùng chuột kéo xuống một khoảng thì nó sẽ đẹp hơn. Nhưng để làm cho rất nhiều dòng thì thật là mệt.
Không hiểu chổ tôi tô đỏ
Bạn kéo thế nào? Bạn thử làm 1 file với Format như ý mình rồi đưa lên đây xem thử
 
Nếu đơn giản thế thì mình đâu cần hỏi. Cái mình hỏi ở đây là: sau khi đã bôi đen hàng, rùi autofit, lúc này cái format của excel không được đẹp lắm vì đường kẻ dưới rất sát với chữ. Mình muốn là đường kẻ dưới nó cách chữ một khoảng cách nào đó (có thể do mình tự đặt ra). Bình thường, mình phải vào ô đó, rùi dùng chuột kéo xuống một khoảng thì nó sẽ đẹp hơn. Nhưng để làm cho rất nhiều dòng thì thật là mệt.
Theo mình biết thì trong excel không có chức năng cách trên, dưới như trong word mà chỉ có chức năng căn giữa thôi.
 
Theo mình biết thì trong excel không có chức năng cách trên, dưới như trong word mà chỉ có chức năng căn giữa thôi.
Đây là chức năng căn đều trên dưới:
Bạn vào format=>cell trong tab alignment phần vertical chọn center là ok.
Tôi thấy cách làm của các bạn trong topic này đã đáp ứng được yêu cầu của bạn ducbeohn rồi. Tôi nghĩ là bạn chưa hiểu bản chất chứ ko phải là:
Nếu đơn giản thế thì mình đâu cần hỏi.
Lúc đầu bạn muốn
khoảng cách từ text trong ô 1 ô cell đến dòng kẻ trên và dòng kẻ dưới của ô đó phải giống nhau trong tất cả các dòng
Thì npv đã giúp bạn đây:
Bạn vào format=>cell trong tab alignment phần vertical chọn center là ok.
Rồi bạn lại muốn:
Mình muốn là đường kẻ dưới nó cách chữ một khoảng cách nào đó (có thể do mình tự đặt ra). Bình thường, mình phải vào ô đó, rùi dùng chuột kéo xuống một khoảng thì nó sẽ đẹp hơn.
Thì ndu96081631 đã giúp bạn đây:
Chưa hiểu lắm ??
Nếu bạn đã canh giữa theo chiều dọc rồi thì chỉ việc:
- Click chọn vào tiêu đề dòng của dòng đầu tiên
- Kéo thanh trượt xuống, bấm giữa phím Shift rồi dùng chuột chọn vào tiêu đề dòng của dòng cuối
- Canh độ rộng của dòng 1 lần cho 3000 dòng (dùng chuột chỉnh hoặc vào menu Format\Row\Height)
Có vấn đề gì đâu chứ
 
Theo mình biết thì trong excel không có chức năng cách trên, dưới như trong word mà chỉ có chức năng căn giữa thôi.
Bạn mới là người hiểu vấn đề của tôi! Trong Word có phần: Paragraph --> Before, After nhung trong excel không có!

Thật ra, trong excel không có chức năng này, thế tôi mới hỏi để nhờ mọi người viết giúp một Macro để có thể tự động làm công việc trên.
Ví dụ thế này:
Chiều cao của hàng = "Chiều cao tự động autofit của hàng đó" + "Khoảng cách từ text trong ô đó đến đường kẻ dưới" + "Khoảng cách từ text trong ô đó đến đường kẻ trên"

"Khoảng cách từ text trong ô đó đến đường kẻ dưới" là một số mình phải nhập.
"Khoảng cách từ text trong ô đó đến đường kẻ trên" là một số mình phải nhập

Khi bạn lập được Macro như thế, bạn sẽ vô cùng dễ dàng chỉnh sửa khoảng cách các hàng nhanh chóng mà không bị mất chữ.
 
Lần chỉnh sửa cuối:
CÓ CẦN THIẾT PHẢI NHƯ VẬY KHÔNG BẠN? Nói bạn đừng buồn.
Word là Word, mà Excel là Excel. Không thể bắt Excel làm chuyện của Word được!

Nói vậy, nhưng cũng còn một cách, là trước khi in cho sếp coi, bạn copy cái bảng tính đó, dán sang bên Word, thành một cái bảng của Word, rồi khi đó thì tha hồ mà chỉnh Before Paragraph và After Paragraph.
 
Bạn mới là người hiểu vấn đề của tôi! Trong Word có phần: Paragraph --> Before, After nhung trong excel không có!

Thật ra, trong excel không có chức năng này, thế tôi mới hỏi để nhờ mọi người viết giúp một Macro để có thể tự động làm công việc trên.
Ví dụ thế này:
Chiều cao của hàng = "Chiều cao tự động autofit của hàng đó" + "Khoảng cách từ text trong ô đó đến đường kẻ dưới" + "Khoảng cách từ text trong ô đó đến đường kẻ trên"

"Khoảng cách từ text trong ô đó đến đường kẻ dưới" là một số mình phải nhập.
"Khoảng cách từ text trong ô đó đến đường kẻ trên" là một số mình phải nhập

Khi bạn lập được Macro như thế, bạn sẽ vô cùng dễ dàng chỉnh sửa khoảng cách các hàng nhanh chóng mà không bị mất chữ.
Theo tôi excel vẫn làm được đấy. Sử dụng cách của anh OverAC chèn thêm dòng trống vào trước mỗi ô. Sử dụng Condition format để định dạng dòng trống này là bạn được kq như ý.
 
Giờ rỗi rỗi ngồi xem lại yêu cầu của bạn ducbeohn, mới thấy như sau: Đầu tiên bạn ducbeohn hỏi:
Yêu cầu của sếp mình là thế này, khoảng cách từ text trong ô 1 ô cell đến dòng kẻ trên và dòng kẻ dưới của ô đó phải giống nhau trong tất cả các dòng (tất nhiên các text trong ô cell đó đã căn giữa theo phương đứng rùi). Nếu làm bằng tay thì die luồn vì sheet này có hơn 3000 dòng
Sau đó bạn đó viết
Nếu đơn giản thế thì mình đâu cần hỏi. Cái mình hỏi ở đây là: sau khi đã bôi đen hàng, rùi autofit, lúc này cái format của excel không được đẹp lắm vì đường kẻ dưới rất sát với chữ. Mình muốn là đường kẻ dưới nó cách chữ một khoảng cách nào đó (có thể do mình tự đặt ra). Bình thường, mình phải vào ô đó, rùi dùng chuột kéo xuống một khoảng thì nó sẽ đẹp hơn. Nhưng để làm cho rất nhiều dòng thì thật là mệt.
Và:
Chiều cao của hàng = "Chiều cao tự động autofit của hàng đó" + "Khoảng cách từ text trong ô đó đến đường kẻ dưới" + "Khoảng cách từ text trong ô đó đến đường kẻ trên"
Đúng là trong excel không có chức năng after/before paragraph mà chỉ có Top,center,Botton,justify,contributed. Nhưng xin hỏi bạn là khi bạn làm bằng tay bạn căn chỉnh như thế nào vì khi bạn kéo dòng thực chất là bạn đang đặt độ cao của dòng đó mà thôi. Tóm lại mọi thứ mà bạn đang có thể chỉnh bằng tay thì excel có thể làm tự động được.
Thân.
 
Chiều cao dòng

Bạn thử cái này xem có được không?
PHP:
Sub ChieuCao()
    HangDau = 1
    HangCuoi = [A65000].End(xlUp).Row
    TruocSau = 10
    With Rows(HangDau & ":" & HangCuoi)
        .VerticalAlignment = xlCenter
        .WrapText = True
        .EntireRow.AutoFit
        .RowHeight = .RowHeight + TruocSau
    End With
End Sub
 
Cái này mình đang rất cần, mình hiểu bạn.
Vì khi ta xem trên cửa sổ Excel thì là đẹp, nhưng khi in ra, dòng kẻ dưới rất sát với text.
Mình cũng đã đọc bên tiếng Anh và họ có viết vài Macro!

Cheer!
 
Lần chỉnh sửa cuối:
Việc làm này rất cần thiết. Thông thường mình cũng hay sử dụng 3 thao tác để định dạng cho các ô excel có nhiều dòng text vì sợ dòng chữ bị che khuất khi in ra không đọc được hết nội dung và không cách đều dòng kẻ trên và dưới
1. Chọn định dạng Format\Cells\Alignment\Wrap Text
2. Chọn định dạng Format\Cells\Alignment\Vertical\Center
3. Chọn định dạng Format\Row\Autofit
4. Để nét kẻ không bị sát dòng chữ thì lại phải kéo rộng thêm cho dòng rộng thêm ra
Ví dụ sau khi làm song bước 3 chiều cao dòng là 30 nhưng đến bước 4 thì kéo rộng cho mỗi dòng thêm 5 tức cho thành 35. Chiều cao của dòng ở bước 4 = chiều cao Autofit của dòng + 5
 
Bạn thử cái này xem có được không?
PHP:
Sub ChieuCao()
    HangDau = 1
    HangCuoi = [A65000].End(xlUp).Row
    TruocSau = 10
    With Rows(HangDau & ":" & HangCuoi)
        .VerticalAlignment = xlCenter
        .WrapText = True
        .EntireRow.AutoFit
        .RowHeight = .RowHeight + TruocSau
    End With
End Sub

Code của Lypt Giải quyết được 3 bước của mình bước 4 thì chưa được Khi thay TruocSau = 10 thành TruocSau = 20 và chạy lại Code thì không thấy chiều cao dòng tăng lên 10 thấy chiều cao dòng trước và sau khi chạy Code không đổi. Rất mong bạn hoàn thiện thêm một bước nữa
 
Ví dụ sau khi làm xong bước 3 chiều cao dòng là 30 nhưng đến bước 4 thì kéo rộng cho mỗi dòng thêm 5 tức cho thành 35. Chiều cao của dòng ở bước 4 = chiều cao Autofit của dòng + 5
Vậy thì bạn đọc bài 14.
 
Vậy thì bạn đọc bài 14.
em có đọc bài 14 và chạy thử Code trên thấy chiều cao dòng không thay đổi chỉ bằng chiều cao dòng Autofit. Hình như biến số Truocsau=10 chưa được cộng thêm (chưa có tác dụng). chiều cao dòng trước và sau khi chạy code trên vẫn chỉ bằng chiều cao Autofit. Về thuật toán ở bài 14 là đúng nhưng minh nghĩ khai báo biên truocsau có lỗi gì đó
 
Lần chỉnh sửa cuối:
Tôi cũng đã xem lại. Code chạy lần 1 thì ok. Chạy lần sau thì không thực hiện được như mong muốn.
Lý do là sau khi set Autofit thì sau bất kỳ sự thay đổi nào, Excel cũng Autofit lại như cũ. Thực tế code có chạy, chiều cao có tăng, nhưng anh Bill lôi lại như cũ.
 
Web KT

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

Back
Top Bottom