Trong bài viết này, chúng tôi sẽ tạo macro để định dạng dữ liệu đã cho ở định dạng số tùy chỉnh mong muốn bằng cách sử dụng VBA.

Dữ liệu thô cho ví dụ này bao gồm dữ liệu nhóm bán hàng. Dữ liệu thô chứa tên, id sản phẩm, giá sản phẩm, số lượng đã bán và tổng doanh số.

ArrowRawData

Trước khi chạy macro, người ta phải chỉ định định dạng số tùy chỉnh trong cột P và số cột mà người ta muốn áp dụng định dạng số tùy chỉnh trong cột Q.

Nhấp vào nút “Định dạng” để chạy macro “Định dạng”.

ArrowAfterRunningMacro

Macro sẽ thay đổi định dạng của dữ liệu đã cho theo định dạng số tùy chỉnh được chỉ định.

Giải thích logic

Macro này chọn định dạng số từ cột P và gán định dạng số cho các cột được chỉ định bởi số cột trong cột Q.

Trong macro này, chúng tôi đã sử dụng hai vòng lặp DO UNTIL để lặp lại. Đầu tiên DO UNTIL Vòng lặp được sử dụng để lặp cho đến khi tất cả các định dạng số được áp dụng cho các cột. Vòng lặp DO UNTIL thứ hai được sử dụng để tìm tất cả các số cột khác nhau được chỉ định và phân tách bằng dấu phẩy (,).

Giải thích mã

strCol = Left (txt, InStr (txt, “,”) – 1)

Đoạn mã trên được sử dụng để phân tách số cột khỏi chuỗi chứa tất cả các số cột được phân tách bằng dấu phẩy (,).

Columns (CInt (strCol)). NumberFormat = wks.Cells (intRow, 16) .Value Đoạn mã trên được sử dụng để áp dụng định dạng số tùy chỉnh trên cột được chỉ định.

txt = Right (txt, Len (txt) – InStr (txt, “,”))

Đoạn mã trên được sử dụng để tách chuỗi còn lại sau khi xóa số cột khỏi chuỗi đã xác định.

Vui lòng theo dõi bên dưới để biết mã

Option Explicit

Sub Formatting()

'Declaring variables

Dim wks As Worksheet

Dim intRow As Long

Dim strCol As String

Dim txt As String

'Initializing the variables

Set wks = Worksheets("Format")

intRow = 4

'Looping in 16th column until empty value is found

Do Until IsEmpty(wks.Cells(intRow, 16))



'Assigning the value of custom number format

txt = wks.Cells(intRow, 17)



'Looping and finding all the column number separated by comma(,)

Do Until InStr(txt, ",") = 0



'Getting the column number

strCol = Left(txt, InStr(txt, ",") - 1)

'Assigning the number format

Columns(CInt(strCol)).NumberFormat = wks.Cells(intRow, 16).Value

'Truncating the string for finding the next column number after the comma(,)

txt = Right(txt, Len(txt) - InStr(txt, ","))

Loop



'Assigning the number format

Columns(CInt(txt)).NumberFormat = wks.Cells(intRow, 16).Value

intRow = intRow + 1

Loop

End Sub

Nếu bạn thích blog này, hãy chia sẻ nó với bạn bè của bạn trên Facebook và Facebook.

[_GoBack] # Chúng tôi rất muốn nghe ý kiến ​​của bạn, hãy cho chúng tôi biết cách chúng tôi có thể cải thiện công việc của mình và cải thiện nó cho bạn. Viết thư cho chúng tôi [email protected]