Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.02.2016, 23:04   #11
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

Выделяем ячейки запускаем:
Код:
Public Sub www()
    Dim c As Range, l&
    For Each c In Selection
        If Len(c.Value) > 75 Then
                l = InStrRev(c.Value, " ", 76)
            c(1, 3) = Trim(Left(c, l)): c(1, 4) = Trim(Mid(c, l))
        End If
    Next
End Sub
Ах да, так будет на месте:
Код:
Public Sub www()
    Dim c As Range, l&
    For Each c In Selection
        If Len(c.Value) > 75 Then
                l = InStrRev(c.Value, " ", 76)
             c(1, 2) = Trim(Mid(c, l)): c = Trim(Left(c, l))
        End If
    Next
End Sub
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728

Последний раз редактировалось kuklp; 22.02.2016 в 23:22.
kuklp вне форума Ответить с цитированием
Старый 22.02.2016, 23:11   #12
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

кажется я понял задачу!!!
замена 3-я (зачетная)
Код:
Private Sub Worksheet_Change(ByVal Target As Range)
  Dim c As Range
  If Intersect(Target, Columns(1)) Is Nothing Then Exit Sub
  Application.EnableEvents = False
  For Each c In Intersect(Target, Columns(1))
    If Len(c) > 75 Then
      c.Offset(0, 1) = StrReverse(Split(StrReverse(Left(c, 75)))(0)) & Right(c, Len(c) - 75)
      c = Left(c, Len(c) - 1 - Len(c.Offset(0, 1)))
    End If
  Next
  Application.EnableEvents = True
End Sub
а каждой конкретной ячейке решается след. задача:
если длина ячейки > 75 символов - ячейка разбивается на 2 части
первая часть не более 75 символов по ближайшему от 75 позиции пробелу слева
все, что не поместилось в А - переносится в колонку В
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 22.02.2016, 23:25   #13
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

читаем самое первое сообщение
Цитата:
Задача в том, что бы автоматически переносить последнее слово из предложения в ячейке, в другой столбец этой же строки при условии если в предложении больше 75 символов.
понимаете, написано "переносить ПОСЛЕДНЕЕ СЛОВО из предложения", именно эту задачу я и решал, только то же почему-то "переносить", я воспринял как "копировать", поэтому оно оставалось в исходной ячейке.

а коротко задача видимо могла звучать так
при изменении значения в колонке А, если в ячейке больше 75 символов, разбиваем ее на две, разбиваем по словам, в исходной оставляем не более 75 символов, все остальное переносим в ячейку правее

всем спасибо!
ясного ума и четких формулировок!
удачи!
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перенос слова из всех ячеек столбца deserving83 Microsoft Office Excel 7 27.08.2013 22:09
Редактирование ячейки и перенос значения ячейки через форму на другой лис Susven Microsoft Office Excel 2 11.06.2013 09:18
Авто заполнение ячейки Roberto182 Microsoft Office Access 11 25.09.2012 11:25
перенос формата ячейки и преобразование цифр в слова Protuberanez Microsoft Office Excel 11 16.03.2011 00:06
Перенос слова на Си Markuskus Помощь студентам 0 07.12.2009 20:56