Em có một ví dụ như file đính kèm. Em muốn dùng hàm để tô màu các đoạn chữ riêng biệt trong 1 ô có được không ạ? Nhờ các bác chỉ giúp.
'Tô màu cho 7 ký tự đầu trong cell
cell.Characters(Start:=1, Length:=7).Font.Color = -16776961
EM muốn sử dụng công thức chứ ko phải VBA ạBác có thể dùng "Record Macro" để lưu lại code VBA của các thao tác tô màu cho các đoạn trong 1 cell, sau đó xem code nó thế nào để suy ra cách làm.
Cụ thể, để tô màu cho một phần text trong cell, bạn chạy code:
Mã:'Tô màu cho 7 ký tự đầu trong cell cell.Characters(Start:=1, Length:=7).Font.Color = -16776961
![]()
EM muốn sử dụng công thức chứ ko phải VBA ạ
Các hàm trang tính toàn loại gà mờ thôi. Chúng chỉ biết trả về giá trị chứ không biết make-up. Chỗ này kẻ đậm, chỗ kia bôi mầu đỏ, chỗ nọ thoa mầu hồng ..., chúng không biết làm những việc như thế đâu.EM muốn sử dụng công thức chứ ko phải VBA ạ
Cái này là mình dùng công thức liên kết các ô. Và mình muốn đổi màu dữ liệu lấy được ở ô liên kết sang ấy, chứ ko phải trong 1 đoạn văn bản có sẵnCác hàm trang tính toàn loại gà mờ thôi. Chúng chỉ biết trả về giá trị chứ không biết make-up. Chỗ này kẻ đậm, chỗ kia bôi mầu đỏ, chỗ nọ thoa mầu hồng ..., chúng không biết làm những việc như thế đâu.
thế bạn sẽ phải làm việc nối các liên kết đó trong VBA để ra một chuỗi và dùng VBA để tô màu chuỗi đó theo ý bạn. Khi có công thức thì sẽ chỉ có ô đó sẽ chỉ có 1 kiểu chữ, 1 màu chữ thôiCái này là mình dùng công thức liên kết các ô. Và mình muốn đổi màu dữ liệu lấy được ở ô liên kết sang ấy, chứ ko phải trong 1 đoạn văn bản có sẵn
Theo mình biết thì không có hàm cơ bản Excel nào có thể hiểu và đổi màu được như bạn nói, tô màu bình thường theo điều kiện trong Excel lòng vòng chỉ có trong Conditional FormattingCái này là mình dùng công thức liên kết các ô. Và mình muốn đổi màu dữ liệu lấy được ở ô liên kết sang ấy, chứ ko phải trong 1 đoạn văn bản có sẵn
Vậy giả sử ở ô E1 mình có công thức như sau:thế bạn sẽ phải làm việc nối các liên kết đó trong VBA để ra một chuỗi và dùng VBA để tô màu chuỗi đó theo ý bạn. Khi có công thức thì sẽ chỉ có ô đó sẽ chỉ có 1 kiểu chữ, 1 màu chữ thôi
Cho mình hỏi các bạn thêm chút với code này là đếm số ký tự từ đầu, nhưng giả sử mình muốn tô màu các ký tự cuối câu mà đầu thì không cố định số chữ thì code phải thế nào.Bác có thể dùng "Record Macro" để lưu lại code VBA của các thao tác tô màu cho các đoạn trong 1 cell, sau đó xem code nó thế nào để suy ra cách làm.
Cụ thể, để tô màu cho một phần text trong cell, bạn chạy code:
Mã:'Tô màu cho 7 ký tự đầu trong cell cell.Characters(Start:=1, Length:=7).Font.Color = -16776961
![]()
Bạn thử xem nhéVậy giả sử ở ô E1 mình có công thức như sau:
="- Văn bản "&A77&A78&" "&F73&A79&A81&A80
Bạn giúp mình cái code để màu của phần link từ F73 và A81 thành màu đỏ với ạ
thank bạn, mình cũng đã làm được rồi, chỉ cần cộng độ dài của chuỗi ký tự trong các ô vào start và lengh là ok. Kiểu như sau:Bạn thử xem nhé
Set Found = Range("A9")
With Found.Characters(Start:=633, Length:=Len(Range("A54")))
.Font.ColorIndex = 3
.Font.Bold = True
End With
With Found.Characters(Start:=Len(Range("A54")) + 836, Length:=Len(Range("C40")) + 1)
.Font.ColorIndex = 3
.Font.Bold = True
End With
Nếu của bạn cố định rồi thì chỉ cần thế thôi.thank bạn, mình cũng đã làm được rồi, chỉ cần cộng độ dài của chuỗi ký tự trong các ô vào start và lengh là ok. Kiểu như sau:
Mã:Set Found = Range("A9") With Found.Characters(Start:=633, Length:=Len(Range("A54"))) .Font.ColorIndex = 3 .Font.Bold = True End With With Found.Characters(Start:=Len(Range("A54")) + 836, Length:=Len(Range("C40")) + 1) .Font.ColorIndex = 3 .Font.Bold = True End With
Cũng nhờ từ gợi ý của bạn mà ra. Chân thành cảm ơn bạn nhiều.Nếu của bạn cố định rồi thì chỉ cần thế thôi.còn kiểu trên là độ dài các ô liên kết có thể thay đổi mà. Bạn cứ hiểu cách làm và xử lý được công việc của mình là ổn rồi