Изменение значений ячеек Excel в зависимости от их длины с помощью UDF - PullRequest
0 голосов
/ 07 марта 2019

Меня попросили изменить некоторые значения телефонных номеров в столбце Excel, и я хотел использовать возможность сделать UDF впервые.

В настоящее время у меня есть список телефонных номеров, которые различаются по размеру.,Некоторые числа являются полными, а некоторые неполными (длина IE варьируется от 7 до 11).Целевая длина для каждого номера составляет 10 цифр.Если число больше 10 цифр, я обрезаю первое число, если оно меньше, я добавляю «0» в начало строки, пока оно не станет длиной 10 цифр.

Я не совсем уверен, что яЯ делаю неправильно, поэтому я надеялся, что кто-то может направить меня в правильном направлении.В данный момент я получаю «# ЗНАЧЕНИЕ» в своей функциональной ячейке.Я нацеливаюсь на ячейку, отформатированную как «текстовая» ячейка.Любой совет приветствуется!Вот моя функция ...

Public Function phone_number_trim(phone_number As String)

Dim phone_number_length As Integer
Dim s_phone_number As String


phone_number_length = phone_number.Len
s_phone_number = phone_number

If phone_number_length > 10 Then s_phone_number = Mid(s_phone_number, 2, 10)

If phone_number_length < 10 Then
    For i = 0 To phone_number_length
    s_phone_number = "0" + s_phone_number
    Next
End If

phone_number = s_phone_number

End Function

Вот как выглядит мой редактор на всякий случай ... Редактор

1 Ответ

0 голосов
/ 08 марта 2019

На тот случай, если кого-то заинтересует эта функция, с которой я закончил ...

Мне пришлось немного почистить свои данные, поэтому я написал вспомогательную функцию. Это не идеально, и я знаю, что есть случаи, когда это не будет работать, но я перейду эти мосты, когда они придут!

Public Function prepare_the_subject(subject As String) As String

Dim bad_guys() As Variant
bad_guys = Array(" ", "-", ")", "(", "'", ".", "/", "\")
Dim test As String

test = subject

For Each guy In bad_guys
    test = Replace(test, guy, "")
Next guy

prepare_the_subject = test

End Function

Public Function phone_number_trim(phone_number As String) As String

Dim phone_number_length As Integer
Dim s_phone_number As String
Dim i As Integer
Dim zero_len As Integer

s_phone_number = phone_number
s_phone_number = prepare_the_subject(s_phone_number)
phone_number_length = Len(s_phone_number)
zero_len = 10 - phone_number_length

If phone_number_length > 10 Then s_phone_number = Mid(s_phone_number, 2, 10)

If phone_number_length < 10 Then
    For i = 1 To zero_len
    s_phone_number = "0" + s_phone_number
    Next
End If

phone_number_trim = s_phone_number

End Function
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...