Здравствуйте, такая проблема.. Как переносить части ячеек по количеству символов в них с предлогами. Объясню, сейчас я использую 2 формулы для разбивки ячеек столбца А на 2 части с переносом только по целым словам. 1. До 35 символов
И мне надо сейчас сделать как-то чтоб не только перенос был по целым словам, но и включая предлоги всевозможные. То есть, если остаётся последними символами в столбце В предлог, то надо чтоб он тоже переместился в столбец С. Кто-нибудь знает как это сделать? Буду благодарен.
Здравствуйте, такая проблема.. Как переносить части ячеек по количеству символов в них с предлогами. Объясню, сейчас я использую 2 формулы для разбивки ячеек столбца А на 2 части с переносом только по целым словам. 1. До 35 символов
И мне надо сейчас сделать как-то чтоб не только перенос был по целым словам, но и включая предлоги всевозможные. То есть, если остаётся последними символами в столбце В предлог, то надо чтоб он тоже переместился в столбец С. Кто-нибудь знает как это сделать? Буду благодарен.AdwordsDirect
[offtop]Слово «соответственно» является самым длинным предлогом и союзом одновременно. Оно состоит из 14 букв. Самая длинная частица - «исключительно» - на букву короче.
[offtop]Слово «соответственно» является самым длинным предлогом и союзом одновременно. Оно состоит из 14 букв. Самая длинная частица - «исключительно» - на букву короче. Che79
AdwordsDirect, Может надо от печки плясать? Конечная цель какова?
P.S. X лет назад в чеках Дикси названия продуктов сократили , как могли. Читаю однажды и думаю, что это я такое купил с названием сыроглазрыж и батонаребада. Оказались Сырок глазированный Рыжий ап и батон нарезной Бадаевский.
AdwordsDirect, Может надо от печки плясать? Конечная цель какова?
P.S. X лет назад в чеках Дикси названия продуктов сократили , как могли. Читаю однажды и думаю, что это я такое купил с названием сыроглазрыж и батонаребада. Оказались Сырок глазированный Рыжий ап и батон нарезной Бадаевский.bmv98rus
Замечательный Временно просто медведь , процентов на 20.
А нет ли возможно в этой формуле/скрипте перечислить ряд предлогов которые необходимо перенести? Тогда может сделать просто перенос самих предлогов без условия ДЛСТР, как бы отдельной функцией, условно говоря, в случае если столбец А заканчивается на ("на" "из" "из-за" "и" "в" "к" "до" "от" "за") и прочее, то эти сами перечисленные предлоги уходят благополучно в столбец В в соответствующую строчку перед содержимым определенной ячейки добавляя перед собою пробел.
Или это я уже размечтался тут.. Конечная цель - автоматизация рутинных забот.
P.S. X лет назад в чеках Дикси названия продуктов сократили , как могли. Читаю однажды и думаю, что это я такое купил с названием сыроглазрыж и батонаребада. Оказались Сырок глазированный Рыжий ап и батон нарезной Бадаевский.
Смешно
А нет ли возможно в этой формуле/скрипте перечислить ряд предлогов которые необходимо перенести? Тогда может сделать просто перенос самих предлогов без условия ДЛСТР, как бы отдельной функцией, условно говоря, в случае если столбец А заканчивается на ("на" "из" "из-за" "и" "в" "к" "до" "от" "за") и прочее, то эти сами перечисленные предлоги уходят благополучно в столбец В в соответствующую строчку перед содержимым определенной ячейки добавляя перед собою пробел.
Или это я уже размечтался тут.. Конечная цель - автоматизация рутинных забот.
P.S. X лет назад в чеках Дикси названия продуктов сократили , как могли. Читаю однажды и думаю, что это я такое купил с названием сыроглазрыж и батонаребада. Оказались Сырок глазированный Рыжий ап и батон нарезной Бадаевский.
Под рукой нет Excel, так что проверить не могу, пишу как придется )
Алгоритм простой: Определяем последнее слово до переноса и проверяем, не предлог ли оно Если предлог, то переносим тоже.
[vba]
Код
Sub Perenos()
for i = 1 to Selection.Rows.Count
S = RTrim(Left(Selection.Cells(i,1).Value,35)) SFull = Selection.Cells(i,1).Value
BlankCounter = 0
if Mid(SFull,36,1) <> " " and Len(S) = 35 tnen SplitWord = True else SplitWord = False
LastWord = Right(S,1)
for j = Len(S)-1 to 1 step -1
if Mid(S, j, 1) = " " then if Mid(S, j+1,1)<>" " then BlankCounter = BlankCounter + 1 if BlankCounter = 1 and SplitWord then LastWord = "" if BlankCounter = 1 and not SplitWord or BlankCounter = 2 then LastWordPosition = j+1 Exit for End if else LastWord = Mid(S,j,1) & LastWord End if
Next j
if LastWord = "от" or LastWord = "на" or LastWord = "ещекакойнибудьпредлог" then Selection.Cells(i,2).Value = Left(SFull, LastWordPosition-1) Selection.Cells(i,3).Value = Right(SFull, Len(SFull) - LastWordPosition+1) else Selection.Cells(i,2).Value = Left(SFull, LastWordPosition + Len(LastWord)) Selection.Cells(i,3).Value = Right(SFull, Len(SFull) - LastWordPosition - Len(LastWord)+1) end if
Next i
End Sub
[/vba]
Могу завтра на работе проверить. Впрочем, мысль понятна, и добить макрос можно уже и не обладая знаниями VBA
Очень давно не писал на VBA, посему прошу прощения за крайнюю корявость. Понятно, что можно Split использовать, но не хотелось с массивом возиться
Под рукой нет Excel, так что проверить не могу, пишу как придется )
Алгоритм простой: Определяем последнее слово до переноса и проверяем, не предлог ли оно Если предлог, то переносим тоже.
[vba]
Код
Sub Perenos()
for i = 1 to Selection.Rows.Count
S = RTrim(Left(Selection.Cells(i,1).Value,35)) SFull = Selection.Cells(i,1).Value
BlankCounter = 0
if Mid(SFull,36,1) <> " " and Len(S) = 35 tnen SplitWord = True else SplitWord = False
LastWord = Right(S,1)
for j = Len(S)-1 to 1 step -1
if Mid(S, j, 1) = " " then if Mid(S, j+1,1)<>" " then BlankCounter = BlankCounter + 1 if BlankCounter = 1 and SplitWord then LastWord = "" if BlankCounter = 1 and not SplitWord or BlankCounter = 2 then LastWordPosition = j+1 Exit for End if else LastWord = Mid(S,j,1) & LastWord End if
Next j
if LastWord = "от" or LastWord = "на" or LastWord = "ещекакойнибудьпредлог" then Selection.Cells(i,2).Value = Left(SFull, LastWordPosition-1) Selection.Cells(i,3).Value = Right(SFull, Len(SFull) - LastWordPosition+1) else Selection.Cells(i,2).Value = Left(SFull, LastWordPosition + Len(LastWord)) Selection.Cells(i,3).Value = Right(SFull, Len(SFull) - LastWordPosition - Len(LastWord)+1) end if
Next i
End Sub
[/vba]
Могу завтра на работе проверить. Впрочем, мысль понятна, и добить макрос можно уже и не обладая знаниями VBA
Очень давно не писал на VBA, посему прошу прощения за крайнюю корявость. Понятно, что можно Split использовать, но не хотелось с массивом возитьсяabtextime
Сообщение отредактировал abtextime - Среда, 31.01.2018, 01:51
Под рукой нет Excel, так что проверить не могу, пишу как придется )
К опечатке добавился перенос строк при вставке не проверял работу просто подправил 4 СТРОКИ
[vba]
Код
Sub Perenos() For i = 1 To Selection.Rows.Count S = RTrim(Left(Selection.Cells(i, 1).Value, 35)) SFull = Selection.Cells(i, 1).Value BlankCounter = 0 If Mid(SFull, 36, 1) <> " " And Len(S) = 35 Then SplitWord = True Else SplitWord = False LastWord = Right(S, 1) For j = Len(S) - 1 To 1 Step -1 If Mid(S, j, 1) = " " Then If Mid(S, j + 1, 1) <> " " Then BlankCounter = BlankCounter + 1 If BlankCounter = 1 And SplitWord Then LastWord = "" If BlankCounter = 1 And Not SplitWord Or BlankCounter = 2 Then LastWordPosition = j + 1 Exit For End If Else LastWord = Mid(S, j, 1) & LastWord End If Next j If LastWord = "от" Or LastWord = "на" Or LastWord = "ещекакойнибудьпредлог" Then Selection.Cells(i, 2).Value = Left(SFull, LastWordPosition - 1) Selection.Cells(i, 3).Value = Right(SFull, Len(SFull) - LastWordPosition + 1) Else Selection.Cells(i, 2).Value = Left(SFull, LastWordPosition + Len(LastWord)) Selection.Cells(i, 3).Value = Right(SFull, Len(SFull) - LastWordPosition - Len(LastWord) + 1) End If Next i End Sub
Под рукой нет Excel, так что проверить не могу, пишу как придется )
К опечатке добавился перенос строк при вставке не проверял работу просто подправил 4 СТРОКИ
[vba]
Код
Sub Perenos() For i = 1 To Selection.Rows.Count S = RTrim(Left(Selection.Cells(i, 1).Value, 35)) SFull = Selection.Cells(i, 1).Value BlankCounter = 0 If Mid(SFull, 36, 1) <> " " And Len(S) = 35 Then SplitWord = True Else SplitWord = False LastWord = Right(S, 1) For j = Len(S) - 1 To 1 Step -1 If Mid(S, j, 1) = " " Then If Mid(S, j + 1, 1) <> " " Then BlankCounter = BlankCounter + 1 If BlankCounter = 1 And SplitWord Then LastWord = "" If BlankCounter = 1 And Not SplitWord Or BlankCounter = 2 Then LastWordPosition = j + 1 Exit For End If Else LastWord = Mid(S, j, 1) & LastWord End If Next j If LastWord = "от" Or LastWord = "на" Or LastWord = "ещекакойнибудьпредлог" Then Selection.Cells(i, 2).Value = Left(SFull, LastWordPosition - 1) Selection.Cells(i, 3).Value = Right(SFull, Len(SFull) - LastWordPosition + 1) Else Selection.Cells(i, 2).Value = Left(SFull, LastWordPosition + Len(LastWord)) Selection.Cells(i, 3).Value = Right(SFull, Len(SFull) - LastWordPosition - Len(LastWord) + 1) End If Next i End Sub
В формуле используются имена (вкладка "Формулы" - Диспетчер имен), чтобы формула не была громоздкой. Я сделал лист "Доплист", на него записывайте предлоги. PS. Могу конечно ошибаться, но мне кажется, что Excel не был создан для таких задач. Хотя бы потому, что редактор формул в Excel "никакой" для больших формул. Чтобы писать большие формулы, нужно делать отступы, расстояния между строками формулы, как в VBA, чтобы можно было читать и писать формулы.
В формуле используются имена (вкладка "Формулы" - Диспетчер имен), чтобы формула не была громоздкой. Я сделал лист "Доплист", на него записывайте предлоги. PS. Могу конечно ошибаться, но мне кажется, что Excel не был создан для таких задач. Хотя бы потому, что редактор формул в Excel "никакой" для больших формул. Чтобы писать большие формулы, нужно делать отступы, расстояния между строками формулы, как в VBA, чтобы можно было читать и писать формулы.Karataev
Дата: Среда, 31.01.2018, 09:59 | Сообщение № 8 К опечатке добавился перенос строк при вставке не проверял работу просто подправил 4 СТРОКИ
Этот вариант сработал. Благодарю за помощь.
Вскрылись некоторые ещё моменты: теперь если остаётся предлог - он переносится, а как сделать чтоб, если оставался в *предлог* и *цифры*, то чтоб они тоже переносились. Проще говоря, чтоб фразовая конструкция *предлог*+*цифры*+*руб./р./грн.* оставался неразрывным и был вместе на какой-то ячейке.
Неудобно конечно уже просить, но что делать.. Файл всё тот же. Благодарю!!! Лайки ставлю
Дата: Среда, 31.01.2018, 09:59 | Сообщение № 8 К опечатке добавился перенос строк при вставке не проверял работу просто подправил 4 СТРОКИ
Этот вариант сработал. Благодарю за помощь.
Вскрылись некоторые ещё моменты: теперь если остаётся предлог - он переносится, а как сделать чтоб, если оставался в *предлог* и *цифры*, то чтоб они тоже переносились. Проще говоря, чтоб фразовая конструкция *предлог*+*цифры*+*руб./р./грн.* оставался неразрывным и был вместе на какой-то ячейке.
Неудобно конечно уже просить, но что делать.. Файл всё тот же. Благодарю!!! Лайки ставлюAdwordsDirect
Сообщение отредактировал AdwordsDirect - Среда, 31.01.2018, 13:00