Gà excel muốn hỏi: nối chuỗi và format từng ký tự (ký số)
Em gà lắm nhờ các bác giúp bằng VBA ạ,
Em có các ô :
A1, B1, C1 chứa ký tự là A,B,C format font từng màu khác nhau
A2, B2, C2 chứa ký số (VD: 1,2,3) format font từng màu khác nhauKết quả muốn có:
Ô D1 là chuỗi nối "ABC", và từng ký tự được format tương ứng
Ô D2 là chuỗi nối 123, và từng ký số được format tương ứngCác cao thủ cho em xin 1 đoạn code để làm được việc đó ạ.
Ô D1 em có thể làm được, nhưng ô D2 thì đang vướng ạ.
1322Em xin cảm ơn và mong mỏi được chỉ giáo.
Sub concatenate_cells_formats(cell As Range, source As Range)
'Anon
Dim c As Range
Dim i As Integer
i = 1
With cell
.Value = vbNullString
.ClearFormats
For Each c In source
.Value = .Value & " " & Trim(c)
Next c
.Value = Trim(.Value)
For Each c In source
With .Characters(Start:=i, Length:=Len(Trim(c))).Font
.Name = c.Font.Name
.FontStyle = c.Font.FontStyle
.Size = c.Font.Size
.Strikethrough = c.Font.Strikethrough
.Superscript = c.Font.Superscript
.Subscript = c.Font.Subscript
.OutlineFont = c.Font.OutlineFont
.Shadow = c.Font.Shadow
.Underline = c.Font.Underline
.ColorIndex = c.Font.ColorIndex
End With
.Characters(Start:=i + Len(c), Length:=1).Font.Size = 1
i = i + Len(Trim(c)) + 1
Next c
End With
End Sub
Sub test()
Dim rng As Range
Set rng = [A3:C3] 'Not yet looping
Dim row As Range
For Each row In rng.Rows
'Debug.Print col.Column
Call concatenate_cells_formats([D3], rng) 'Not yet looping
Next row
End Sub
Spam một đoạn code vậy
www.giaiphapexcel.com/diendan/threads/g%C3%A0-excel-mu%E1%BB%91n-h%E1%BB%8Fi-n%E1%BB%91i-chu%E1%BB%97i-v%C3%A0-format-t%E1%BB%ABng-k%C3%BD-t%E1%BB%B1-k%C3%BD-s%E1%BB%91.163755/post-1092367
Code dưới của bạn @bebo021999 đã trả lời ở thớt khác
"Bạn" xem xài được không?!Sub LoaiBoSo() Dim i&, j&, cell As Range, k As String, st As String, arr(1 To 10000, 1 To 3) Application.ScreenUpdating = False For Each cell In Selection st = "": j = 0 For i = 1 To Len(cell) k = Mid(cell, i, 1) If Not IsNumeric(k) Then j = j + 1 arr(j, 1) = k: arr(j, 2) = cell.Characters(i, 1).Font.Color arr(j, 3) = cell.Characters(i, 1).Font.Bold End If Next For i = 1 To j st = st & arr(i, 1) Next cell.Value = st For i = 1 To j With cell.Characters(i, 1).Font .Color = arr(i, 2) .Bold = arr(i, 3) End With Next Next Application.ScreenUpdating = True End Sub
Ứng dụng AI và Chat GPT trong Quản trị nhân sự
Học xong khóa này, học viên có thể: Hiểu đúng bản chất AI, các nhóm AI phổ biến và cách AI “hoạt động” ở...
Xem khóa học
Code này có liên quan đến ghép chuỗi đâu nhỉ?
Hihi, kết quả ghép 1,2,3 là "1 2 3", với len = 5
Ý mình là khi ghép 1,2,3 ra con số 123 và format nó
Mình đã thử nhiều lần nhưng vẫn chưa ra kết quả.
Mình đoán lý do là:
1- Khi dùng cells. characters, nếu A,B,C thì sẽ ra đúng "ABC" và format đúng như vậy.
2- Khi dùng cells. characters, nếu 1,2,3 thì sẽ ra đúng "123" nhưng format lại là format của số đầu tiên là số 1
3- Khi dùng cells. characters thì nó làm việc hiệu quả với "real characters" không phải với number ???
4- Mình đã thử insert thêm ký tự để ra "123" với chuỗi rỗng (như kết quả của bạn) và replace, thì kết quả lại về như 2)
1346
Có thể số 123 được định dạng từng số thì không thể, khi nó là giá trị. Mình đã thử format bằng tay cũng không được
Nhưng nếu nhập dạng text:
'123
và format bằng tay thì được (như file đính kèm ở post 1)
Tuy nhiên, dùng code để format cái text này thì vẫn không được.
Mong các cao thủ ghé qua và chỉ giáo.
Mình đã thử 1 đoạn code đơn giản:
Option Explicit
Sub test()
Dim i&, j&
For i = 1 To 2
For j = 1 To 3
Cells(i, "D").Value = Cells(i, "D").Value & Cells(i, j)
Next
For j = 1 To 3
Cells(i, "D").Characters(j, 1).Font.Color = Cells(i, j).Font.Color
Next
Next
'Neu thêm doan này vào thì "Puteo"
'Range("D1").Value = CLng(Range("D1").Value)
End Sub
Chạy ngon cho ABC nhưng 123 thì ra 123 dạng text. Nếu cố đổi ra số thì tèo.
Chốt lại (không biết có đúng không):
"Một con số dạng value thì không thể format từng phần bên trong."
1358
Nhập bằng số – gán kết quả xuống Cell rồi đổi thành Text sẽ format được nhưng khi đổi lại thành Number là trở về 1 loại định dạng. 🙂
Nhu cầu có chứ bác.
Cũng có lúc cần format con số hàng ngàn chẳng hạn
10000
Với con số 10 lớn hơn và bôi đỏ
Kiểu như VND mất giá, người ta không quan tâm số lẻ, chỉ muốn xem số hàng ngàn mà thôi
Vấn đề em quan tâm là: Có cách nào format từng con số bên trong mà thôi.
Được bình thường mà.
1366
Mình thấy trong chủ để này, câu hỏi ở bài #2 và #3 đáng quan tâm hơn cả.