В этой статье мы создадим макрос для форматирования данных в желаемом пользовательском числовом формате с помощью VBA.

Исходные данные для этого примера состоят из данных отдела продаж. Исходные данные содержат имя, идентификатор продукта, цену продукта, проданное количество и общий объем продаж.

ArrowRawData

Перед запуском макроса необходимо указать пользовательский числовой формат в столбце P и номер столбца, в котором нужно применить пользовательский числовой формат в столбце Q.

Нажмите кнопку «Форматировать», чтобы запустить макрос «Форматирование».

ArrowAfterRunningMacro

Макрос изменит форматирование данных в соответствии с заданным пользовательским числовым форматом.

Логическое объяснение

Этот макрос выбирает форматирование чисел из столбца P и назначает форматирование чисел столбцам, указанным номерами столбцов в столбце Q.

В этом макросе мы используем два цикла DO UNTIL для цикла. Первый цикл DO UNTIL используется для цикла до тех пор, пока все числовые форматы не будут применены к столбцам. Второй цикл DO UNTIL используется для поиска всех различных номеров столбцов, указанных и разделенных запятыми (,).

Объяснение кода

strCol = Left (txt, InStr (txt, «,») — 1)

Приведенный выше код используется для отделения номера столбца от строки, которая содержит все номера столбцов, разделенных запятыми (,).

Столбцы (CInt (strCol)). NumberFormat = wks.Cells (intRow, 16). Value Приведенный выше код используется для применения пользовательского числового формата к указанному столбцу.

txt = Right (txt, Len (txt) — InStr (txt, «,»))

Приведенный выше код используется для отделения оставшейся строки после удаления номера столбца из определенной строки.

Пожалуйста, следуйте за кодом ниже

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

Если вам понравился этот блог, поделитесь им с друзьями на Facebook и Facebook.

[_GoBack] # Мы будем рады услышать от вас, дайте нам знать, как мы можем улучшить нашу работу и сделать ее лучше для вас. Напишите нам на [email protected]