Вход | Регистрация

Информационные технологии ::

Метки: 

Вопрос по Макросу Excel

Я
   Оберон
 
21.12.17 - 11:33
Добрый день.
Возникла необходимость перенумерации строк с текстом в эксель из выделенного диапазона.
Пример:
"1. Вася"
"3. Василий"
"4 Мася"
"  5. Виктория"
ну и т.д.
помогите написать
 
  Рекламное место пустует
   Оберон
 
1 - 21.12.17 - 11:36
пока что тлько формула есть
=ПРАВСИМВ(A1;(ДЛСТР(A1)-ПОИСК(".";A1)-1))
   Tatitutu
 
2 - 21.12.17 - 11:39
Все намного проще

выделяешь нужный диапозон в EXCEL
данные - "текст по столбцам" - с разделителем - точка
готово
вместо
1. Вася
3. Василий
4. Мася
5. Виктория

у тебя будет ДВЕ КОЛОНКИ

1 | Вася
3 | Василий
4 | Мася
5 | Виктория
   Tatitutu
 
3 - 21.12.17 - 11:40
и да - МАКРОС - это совершенно другая история )))
   Оберон
 
4 - 21.12.17 - 11:44
(3) не подойдет, в строке может быть
"1. Иванов И.А."  или   "1 Иванов ИА."
   Оберон
 
5 - 21.12.17 - 11:45
(3) и нужно не куда не переносить а тут же в той же ячейке сделать (((   только макрос пойдет.
   Tatitutu
 
6 - 21.12.17 - 11:48
Возникла необходимость перенумерации строк с текстом в эксель из выделенного диапазона.

ответ в (2)
дальше
сортируешь , перенумеровываешь так ка нужно
в третьем столбце
пишешь формулу
=СЦЕПИТЬ(I14;".";J14)
и получишь результат
"1. Иванов И.А."

(5) ты ПУТАЕШЬ формулу и МАКРОС - это совершенно разные вещи
   Оберон
 
7 - 21.12.17 - 11:53
(6) нет только макрос - основное из требований чтоб по при выделении диапазона в колонке и нажатию кнопки текст обработался и заменился - БЕЗ всяких сцепить и сделать в отдельном месте а потом обратно скопировать. Формулу привел именно для пониманию того как сделать через формулы. а НУЖНО МАКРОС
   Tatitutu
 
8 - 21.12.17 - 12:41
Sub ЗаменаИНумерация()
Dim i As Long
Dim znach As Variant
Dim ttt As String

Dim diapazon As Range

Set diapazon = Application.Intersect(Selection, ActiveSheet.UsedRange)

ttt = "."

If diapazon Is Nothing Then
  MsgBox "Сначала выдели диапазон ячеек!"
  Exit Sub
Else

znach = 1

   For i = 1 To diapazon.Count
    
    tochka = InStr(1, diapazon(i), ttt)
    
    zamena = Mid(diapazon(i), tochka + 1)
    
    diapazon(i) = Str(znach) & ttt & zamena
    
    znach = znach + 1
    
   Next
End If

End Sub
   Оберон
 
9 - 21.12.17 - 13:05
(8) уже сам слепил...

Sub RenumSelectRange()
   On Error Resume Next
   If Err Then Exit Sub
   With Application: .ScreenUpdating = False: .EnableEvents = False: .Calculation = xlManual: End With
   i = 0
   For Each rCell In Selection.Cells
        i = i + 1
        t = rCell.Value
        a1 = Len(t)
        a2 = InStr(1, t, ".", vbTextCompare)
        a3 = Right(t, a1 - a2)
        rCell.Formula = i & ". " & a3
   Next rCell
   With Application: .ScreenUpdating = True: .EnableEvents = True: .Calculation = xlAutomatic: End With
End Sub
   Tatitutu
 
10 - 21.12.17 - 13:16
Спасибо за спасибо !

вот  с этим .Calculation = xlManual поаккуратнее
и вот это  rCell.Formula = i & ". " & a3  может не всегда "взлетать"
 
  Рекламное место пустует
   Neg
 
11 - 21.12.17 - 13:24
вот здесь по экселю хорошо помогают:
http://www.planetaexcel.ru/forum/index.php?PAGE_NAME=list&FID=1


Список тем форума
Рекламное место пустует   Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует