2016-05-17 3 views
0

Контекст здесь является то, что я пытаюсь определить номер телефона модели большой грязной колонки, и отформатировать их, как это:Извлечение и добавить вложенные строки в строки

(CC) NNNN-NNNN

CC быть две цифры кода города

Там может быть два или более чисел в одной и той же клетке (они должны оставаться в той же камере, к сожалению), и должны быть следующие:

(CC) NNNN-NNNN/(CC) NNNN-NNNN

Цифры просто сырые цифры, без пробелов и символов, но как текст и должны оставаться таковыми из-за границы 15 цифр на Excel

Теперь у меня проблема с двумя случаями

Case 1:

Два телефона и один код города (18 цифр)

Пример: CCNNNNNNNNNNNNNNNN

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

Случай 2:

Один телефон и два же код города (12 цифр)

CCCCNNNNNNNN

Для этого нужно просто удалить первые два символа

Пробовал этот способ для случая 1, но в итоге появился 22-строчный символ? не знаю, где я пошел неправильно

  s1 = Mid(Cells(j, 3), 1, 2) 
      s2 = Mid(Cells(j, 3), 3, 10) 
      s3 = Mid(Cells(j, 3), 11, 18) 
      s4 = s1 & s2 & s1 & s3 
+0

«У меня проблема с двумя случаями» - в чем проблема? какой язык программирования вы используете? что вы пробовали? – alfasin

+0

К сожалению, забыли добавить правильные теги – Mojimi

+1

Почему это помечено как VBA? Я не вижу кода VBA в вашем вопросе. – trincot

ответ

0

Большое предостережение здесь форматирование существующих данных .... как вы знаете, какие цифры «код города» и какие цифры номера телефона? Вы можете делать то, что вы пытаетесь сделать здесь, с формулами Excel без VBA ... Для случая 1 вы можете использовать приведенную ниже формулу, заменив «A1» на соответствующую ссылку на ячейку.

="("&MID(A1, 1, 2)&") "&mid(A1,3,4)&"-"&mid(a1,7,4)&"/("&MID(A1, 1, 2)&") "&mid(A1,11,4)&"-"&mid(a1,15,4) 

Для случая 2 вы можете использовать приведенную ниже формулу.

="("&MID(A1, 1, 2)&") "&mid(A1,5,4)&"-"&mid(a1,9,4) 

ли ваше решение иметь быть в VBA?

0

Третий параметр в Mid: длина извлеченной подстроки, а не ее конечный индекс. Если он опущен - выбор идет до конца строки. Выбор также подходит к концу строки, если параметр длины превышает число возможных символов. s2 = Mid(Cells(j, 3), 3, 10) был, таким образом, длиной 10, а не ожидаемым 8.Ваш случай 1 будет выглядеть примерно так:

Sub test() 
    Dim s As String, t As String 
    s = "CCNNNNNNNNNNNNNNNN" 
    t = Mid(s, 1, 10) & Mid(s, 1, 2) & Mid(s, 11) 
    Debug.Print t 
End Sub 

Который имеет выход:

CCNNNNNNNNCCNNNNNNNN 
0

Для ваших двух случаев:

=IF(LEN(A1)=18,REPLACE(A1,11,0,LEFT(A1,2)),IF(LEN(A1)=12,MID(A1,3,10))) 

Не зная другие форматы или желаемые результаты, то трудно разложить по формуле. Формула вернет FALSE, если длина равна 12 или 18.

Смежные вопросы