Страницы: 1
RSS
Как вставить пробел в ячейку по критерию.
 
Доброго времени суток уважаемые гуру EXCELя. Столкнулся с проблемой: имеется столбец с ФИО, где фамилия и имя слились. Нужно расцепить. Фамилия написана большими буквами, а имя с большой, остальные маленькие. Пример: ИВАНОВИван Иванович. Помогите пожалуйста расцепить фамилию и имя, не знаю как это сделать.
 
Создайте кнопку и прицепите ей макрос  
 
Sub ПУСК()  
   Dim i As Long  
   RUSSIAN = "АБВГДЕЁЖЗИКЛМНОПРСТУФХЦЧШЩ"  
     
   For Each iCEll In Selection  
       If Not IsEmpty(iCEll) Then  
           i = 1  
             
           Do While (i < Len(iCEll.Value)) And (InStr(1, RUSSIAN, Mid(iCEll.Value, i, 1)) > 0)  
               i = i + 1  
           Loop  
             
           If (i <> Len(iCEll.Value)) And (i > 2) Then  
               iCEll.Offset(, 1).Value = Mid(iCEll.Value, 1, i - 2) + " " + Mid(iCEll.Value, i - 1)  
           End If  
       End If  
   Next  
End Sub  
 
Выделяете ячейки и запускаете.  
________________________  
khafizovtt@gmail.com
Учимся сами и помогаем другим...
 
=ЛЕВСИМВ(A1;МИН(ЕСЛИ(КОДСИМВ(ПСТР(A1;СТРОКА(1:15);1))>223;СТРОКА(1:15);100))-2) & " " & ПСТР(A142;МИН(ЕСЛИ(КОДСИМВ(ПСТР(A1;СТРОКА(1:15);1))>223;СТРОКА(1:15);100))-1;100)  
 
формула массива
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
{quote}{login=ikki}{date=12.09.2012 03:51}{thema=}{post}=ЛЕВСИМВ(A1;МИН(ЕСЛИ(КОДСИМВ(ПСТР(A1;СТРОКА(1:15);1))>223;СТРОКА(1:15);100))-2) & " " & ПСТР(A142;МИН(ЕСЛИ(КОДСИМВ(ПСТР(A1;СТРОКА(1:15);1))>223;СТРОКА(1:15);100))-1;100){/post}{/quote}  
забыл в одном месте поправить:  
=ЛЕВСИМВ(A1;МИН(ЕСЛИ(КОДСИМВ(ПСТР(A1;СТРОКА(1:15);1))>223;СТРОКА(1:15);100))-2) & " " & ПСТР(A1;МИН(ЕСЛИ(КОДСИМВ(ПСТР(A1;СТРОКА(1:15);1))>223;СТРОКА(1:15);100))-1;100)  
 
впрочем, макросом лучше.
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
Макрос работает, громадное спасибо.
 
еще макрос:  
 
Function test(s As String) As String  
   Dim i As Long, iLen As Long  
   iLen = Len(s): test = s  
   Do  
       i = i + 1  
       If Mid(s, i, 1) Like "[а-я]" Then
           If i > 2 Then test = Left(s, i - 2) & " " & Mid(s, i - 1)  
           Exit Do  
       End If  
   Loop Until i > iLen  
End Function
Страницы: 1
Читают тему
Наверх