Cần ADD-In tự động xuống hàng và đổi size của font

Liên hệ QC

huisno1

Thành viên mới
Tham gia
20/9/11
Bài viết
20
Được thích
3
MÌnh là kiến trúc sư. Mình vừa nhận được một bảng dự toán của công ty thầu nước ngoài và mình có trách nhiệm là phải chuyển cho chủ đầu tư Việt Nam. Vấn đề là thế này. Trong một Cell ho ghi như sau: Beam ( dầm ) ( không xuống hàng). Vì đưa cho chủ đầu tư Việt Nam nên mình có trách nhiệm phải chuyển nó lại là
Dầm
( Beam )

Tức là mình phải làm hai việc, chuyển vị trí Tiếng Anh và TIếng Việt và xuống hàng ở ô Tiếng Anh( trong cùng một Cell). Có đến 2000 cell các bạn ạ? MÌnh chóng mặt. Các bạn có thể giúp mình viết Add-in không?
Vấn đề thứ hai của mình, ví dụ bây giờ mình đã có cell như trên, nhưng form thiết kế là hàng trên( có chữ Dầm ) phải có size font là 11, và hàng dưới là 10, có cách nào không các bạn?
Mình cảm ơn các bạn rất nhiều! Mong các bạn giúp mình.
 
Up file lên được không bạn! Chung chung như thế không hiểu cấu trúc dữ liệu sắp xếp thế nào, khó phát biểu lắm!
 
Không bạn nào giúp mình sao:((
 
OK mình up file đây, bạn giúp mình nhé.
Up file lên cũng phải nói rõ các nguyên tắc tách ghép chuổi chứ bạn ---> Nhìn ví dụ chẳng hiểu gì ráo
Tại sao chữ BLACK NIPPLE - ( Nối 2 đầu răng ngoài thép đen ) lại biến thành Nối 2 đầu răng ngoài thép đen ( size 11)
Black nipple ( size 10)

???
Mấy chữ ( size 11) ( size 10) ở đâu ra?
 
Up file lên cũng phải nói rõ các nguyên tắc tách ghép chuổi chứ bạn ---> Nhìn ví dụ chẳng hiểu gì ráo
Tại sao chữ BLACK NIPPLE - ( Nối 2 đầu răng ngoài thép đen ) lại biến thành Nối 2 đầu răng ngoài thép đen ( size 11)
Black nipple ( size 10)

???
Mấy chữ ( size 11) ( size 10) ở đâu ra?
Theo em hiểu thì ý của bạn ấy là dòng trên cho Size chữ là 11, dòng dưới cho Size chữ là 10, đồng thời Lower dòng dưới. Nhưng còn 1 cái nữa mà bạn ấy chưa chỉ ra như ý kiến ban đầu: là chuyển dòng tiếng anh xuống dưới, chuyển dòng tiếng Việt lên trên. Nếu dữ liệu không sắp xếp theo quy luật thì chả có cách nào phân biệt 2 khoảng ký tự cả. VD: Như ban đầu bạn ấy viết một ví dụ là Beam ( dầm ): thì đương nhiên có thể tách theo ký tự "(", rồi đảo ký tự, rồi..... tiếp tục. Code không khó nhưng phải có dữ liệu chuẩn đúng không anh.
 
Theo em hiểu thì ý của bạn ấy là dòng trên cho Size chữ là 11, dòng dưới cho Size chữ là 10, đồng thời Lower dòng dưới. Nhưng còn 1 cái nữa mà bạn ấy chưa chỉ ra như ý kiến ban đầu: là chuyển dòng tiếng anh xuống dưới, chuyển dòng tiếng Việt lên trên. Nếu dữ liệu không sắp xếp theo quy luật thì chả có cách nào phân biệt 2 khoảng ký tự cả. VD: Như ban đầu bạn ấy viết một ví dụ là Beam ( dầm ): thì đương nhiên có thể tách theo ký tự "(", rồi đảo ký tự, rồi..... tiếp tục. Code không khó nhưng phải có dữ liệu chuẩn đúng không anh.
Vài thì bài này không khó
Vấn đề là phải chờ tác giả đưa lên dữ liệu khoảng vài trăm dòng để làm cho nó chắc
(1 dòng dữ liệu chả nói lên được điều gì)
 
CẢm ơn tất cả các bạn. Như mình đã nói đó. Cell của mình có nội dung là BLACK NIPPLE - ( Nối 2 đầu răng ngoài thép đen ), mình muốn cell này đổi thành như sau:
Nối 2 đầu răng ngoài thép đen ( hàng này có size là 11)
Black nipple ( hàng này có size là 10 )
Mình giải thích chưa rõ, đã giải thích lại, mong các bạn giúp!
 
file của mình

Mình up file có nhiều content hơn
 

File đính kèm

  • help.xlsx
    8.7 KB · Đọc: 22
Mình up file có nhiều content hơn
Bạn thử sử dụng code này
Mã:
Public Sub WaWa()
    Dim Vung, Cll, I, Tam
    Application.ScreenUpdating = False
    [b1:b1000].Clear
    Set Vung = Range([a1], [a50000].End(xlUp))
        For Each Cll In Vung
            Cll.Offset(, 1) = Mid(Cll, InStr(1, Cll, "(") + 2, Len(Cll) - InStr(1, Cll, "(") - 3) & Chr(10) & Left(Cll, InStr(1, Cll, "(") - 1)
                With Cll.Offset(, 1).Characters(1, InStr(1, Cll.Offset(, 1), Chr(10)) - 1).Font
                    .Name = "Calibri"
                    .Size = 11
                End With
                With Cll.Offset(, 1).Characters(InStr(1, Cll.Offset(, 1), Chr(10)) + 1, Len(Cll.Offset(, 1)) - InStr(1, Cll.Offset(, 1), Chr(10)) - 1).Font
                    .Name = "Calibri"
                    .Size = 10
                End With
            Next Cll
    Application.ScreenUpdating = True
End Sub
Mở file ==> bấm Ctrl + W để chạy code
Chỉ đúng khi dữ liệu cấu trúc đúng như trong bài
Thân
 

File đính kèm

  • HongBietLuon.rar
    15.1 KB · Đọc: 6
Mình đã dùng được đại đa số. Nhưng nảy sinh vấn đề là nếu trong những cell mình chọn có cell không có giá trị thì hàm sẽ bị lỗi. Có thể bỏ qua những cell đó không?
 
Vấn đề thứ hai là trong số những cell mình phải chỉnh sửa thì có một số cell đã được edit rồi. Nghĩa là mình sẽ bỏ qua bước tách hàng mà chỉ cần đổi font size cho hàng trên và hàng dưới. Bạn có thể giúp mình tách riêng lệnh ấy ra không?
 
Vấn đề thứ ba gắn liền với vấn đề thứ hai kể trên, nghĩa là mình có những cell đã tách hàng rồi. Nhưng lại chưa viết hoa đầu câu. Các bạn có thể giúp mình đoạn mã vữa đổi font size và vừa viết hoa đầu dòng không?
 
Mình up file có nhiều content hơn
Code đây:
PHP:
Sub ChangeFormat()
  Dim Clls As Range, Tmp
  On Error Resume Next
  Application.ScreenUpdating = False
  Selection.WrapText = True
  For Each Clls In Selection
    If InStr(Clls.Value, "(") And Clls.Value <> "" Then
      Tmp = Split(Clls.Value, "(")
      Tmp(0) = Trim(UCase(Left(LCase(Tmp(0)), 1)) & Mid(LCase(Tmp(0)), 2, 255))
      Tmp(1) = Trim(Replace(Tmp(1), ")", ""))
      With Clls
        .Value = Tmp(1) & vbLf & Tmp(0)
        .Characters(1, InStr(.Value, vbLf) - 1).Font.Size = 11
        .Characters(InStr(.Value, vbLf), 255).Font.Size = 10
      End With
    End If
  Next
  Selection.EntireRow.AutoFit
  Application.ScreenUpdating = True
End Sub
Quét chọn vùng dữ liệu rồi bấm Alt + F8, chọn tên sub rồi bấm Run
Lưu ý:
- Để code chạy được trên Excel 2007, bạn cần phải save file theo đuôi *.xlsm nhé
- Phải đặt Security ở mức thích hợp thì code mới hoạt động được
--------------------------------
Vấn đề thứ hai là ............
Vấn đề thứ ba .............
Bạn còn vấn đề gì, đưa lên 1 lần luôn đi
 

File đính kèm

  • ChangeFormat.rar
    11.2 KB · Đọc: 12
Lần chỉnh sửa cuối:
Thử file này xem bạn nhé. Check thấy OK rùi đó. Chỉ có điều cái vụ UPVC T của bạn nó chuyển thành Upvc t. Mở file, bấm Atl + F8 chạy code tachDL.
Mã của bạn dùng rất tốt với những cell có định dạng như mình đưa. Cảm ơn bạn nhiều lắm. Bây giờ có nảy sinh một số vấn đề như mình nêu, mong bạn giúp!
 
Cảm ơn bạn nhiều, chỉ có chừng đó thôi đó bạn!
 
Cảm ơn bạn nhiều, chỉ có chừng đó thôi đó bạn!
Thế thì sửa code thành vầy:
PHP:
Sub ChangeFormat()
  Dim Clls As Range, Tmp
  On Error Resume Next
  Application.ScreenUpdating = False
  Selection.WrapText = True
  For Each Clls In Selection
    If InStr(Clls.Value, "(") And Clls.Value <> "" Then
      Tmp = Split(Clls.Value, "(")
      Tmp(0) = Trim(LCase(Tmp(0)))
      Tmp(1) = Trim(Replace(Tmp(1), ")", ""))
      Clls.Value = Tmp(1) & vbLf & Tmp(0)
    End If
    With Clls
      Tmp = Split(Clls.Value, vbLf)
      Tmp(1) = UCase(Left(Tmp(1), 1)) & Mid(Tmp(1), 2, 255)
      .Value = Tmp(0) & vbLf & Tmp(1)
      .Characters(1, InStr(.Value, vbLf) - 1).Font.Size = 11
      .Characters(InStr(.Value, vbLf), 255).Font.Size = 10
    End With
  Next
  Selection.EntireRow.AutoFit
  Application.ScreenUpdating = True
End Sub
Các cell bạn đang làm dang dỡ cũng chơi được luôn
 

File đính kèm

  • ChangeFormat_2.rar
    11.2 KB · Đọc: 20
ÚI, không được bạn ơi. Như thế này thì nó đổi size và viết hoa được, nhưng những cell mình đã cho tiếng Việt lên trên tiếng Anh thì xếp ngược lại đó bạn. MÌnh muốn những cell mà mình đã hiệu chỉnh thì chỉ cần đổi font size và viết hoa chữ đầu thôi, các chữ khác không đổi.
 
ÚI, không được bạn ơi. Như thế này thì nó đổi size và viết hoa được, nhưng những cell mình đã cho tiếng Việt lên trên tiếng Anh thì xếp ngược lại đó bạn. MÌnh muốn những cell mà mình đã hiệu chỉnh thì chỉ cần đổi font size và viết hoa chữ đầu thôi, các chữ khác không đổi.
Làm gì có vụ đó chứ! Bạn đã thử chắc chưa?
Code của tôi hoạt động trên nguyên tắc:
- Tìm xem cell có chưa dấu ( hay không, nếu có thì chứng tỏ cell này chưa chuyển đổi ---> Tiến hành đổi chổ đồng thời xóa luôn dấu ()
- Tiếp theo format ở trên font = 11, ở dưới font = 10
Vậy nếu cell đã được đổi vị trí các chuổi thì đồng nghĩa cặp dấu () cũng không còn nữa, làm gì có chuyển code lại đổi chổ tiếp
 
Lần chỉnh sửa cuối:
Web KT
Back
Top Bottom