Страницы: 1
RSS
Как можно измерить ДЛИНУ текста но не подсчетом символов.
 
Всем добрый вечер.  
Вопрос собственно в теме – как еще можно измерить ДЛИННУ текста в ячейки (например в миллиметрах).  
Суть вот в чем : в ячейку определенной длинны можно ввести сколько угодно символов (ну в пределах разумного:)), а видно будет только некоторое количество- все зависит от границ ячейки. При печатании листа на принтере , распечатается только тот текст который будет в нутрии границы ячейки   например:  
          ___________  
          | Planetaex|cel (это типа ячейка :) правда без нижней границы)  
                                     
Если распечатать на принтере то будет напечатано «Planetaex» а «cel» не напечатается.  
Вот во общем то и вопрос- как сделать так что бы при достижении определенной ДЛИННЫ текст переходил в другую ячейку.    
В примере надеюсь понятней.  
Всем спасибо.
 
круто  
это не excel  
это полиграфия  
кстати, то что отправляется на печать и то что на экране это разные вещи  
вам для экрана или печати?
 
{quote}{login=тухачевский}{date=16.12.2009 06:21}{thema=}{post}круто  
это не excel  
это полиграфия  
кстати, то что отправляется на печать и то что на экране это разные вещи  
вам для экрана или печати?{/post}{/quote}  
Важнее конечно то что печатается, но у меня пока, что видно - то и печатается.  
Я почему еще задал такой вопрос: где-то встречал что текст можно в байтах измерять (если ничего не путаю) вот и подумал, что может мой вопрос решаем.
 
Можно хоть в попугаях измерять :)  
1 буква = 1 байт (Не верите? http://www.rusedu.info/Article562.html)  
И что, теперь лучше печатать с таким знанием?  
>>Есть ли формула которая будет разбивать текст так?  
Вы уже дали ответ в ячейках J6 - J7  
Отрезать часть строки, если не влазит, во второй ячейке проверять, что не влезло в первую и т.д.  
Ваш вопрос на самом деле такой: Как определить сколько символов видно при определенных ширине столбца и высоте строки? Как определить, что в =ПСТР(D6;1;9) нужно 7, а не 9 писать?  
И формулами это не решить. UDF или макрос.
Bite my shiny metal ass!      
 
Нет, так нельзя. Самая отвратительная практика - дробить текст по разным ячейкам. Так делают только самые дремучие ламеры, не уподобляйтесь им. У ячейки есть свойство WordWrap (переносить по словам) поставьте галочку в свойствах ячейки и ячейка будет расширяться вместе с текстом. Есть еще автоподбор ширины - но это редко пригождается. Поверьте любой более менее продвинутый пользователь будет переделывать Вашу работу (если Вы будете дробить строки).
 
ИМХО - открыл Ваш файл, посмотрел и скажу что неблагодарное это дело. Вы используете Arial и этот шрифт имеет различную ширину символа в алфавите и в зависимости от кол-ва заглавных и прописных и т.д. и т.п.  
Можно пользоваться моноширинным шрифтом, например, Courier New. В нем ширина всех символов одинакова и возможно их посчитать. Однако это действительно до момента пока не смените его размер (шрифта).
 
Vovak, зря вы так резко. Перенос по строкам тоже не идеален, т к, во первых, не всегда возможно его применение и, во вторых, иногда при значениях "почти на две строки" по факту получается 1 строка с текстом и 1 пустая. Думаю, если кто недавно пострадал с выполнением такой задачей в excel'e, при желании назовёт ещё десяток-другой минусов.  
Продвинутые пользователи, как правильно намекнул тухачевский, вообще для большинства задач такого плана не excel'ем пользуются. А если уж excel'em, то танцуют с бубном в зависимости от задачи, в том числе и ручным переносом текста.  
 
А кто-нибудь натыкался на какое-нибудь хорошее и более-менее универсальное VB-решения данной задачи в excel'e?
 
{quote}{login=Igor67}{date=16.12.2009 10:04}{thema=}{post}ИМХО - открыл Ваш файл, посмотрел и скажу что неблагодарное это дело. Вы используете Arial и этот шрифт имеет различную ширину символа в алфавите и в зависимости от кол-ва заглавных и прописных и т.д. и т.п.  
Можно пользоваться моноширинным шрифтом, например, Courier New. В нем ширина всех символов одинакова и возможно их посчитать. Однако это действительно до момента пока не смените его размер (шрифта).{/post}{/quote}  
Igor_67, большое спасибо, Ваш вариант мне очень даже подходит,все как всегда до смешного просто. А моя привычка все усложнять наченает меня уже потихоньку доставть :).  
Уважаемый VovaK, в моей ситуации не льзя было менять ни ширину(или высоту наверное правельно), ни длинну ячейки в этом то и вся "закавыка"-все границы фиксированной длинны.  
Всем спасибо.
 
Ставим свойства ячейки "Переносить по словам", далее меряем высоту строки, если больше стандарта, тогда -1 буква в след ячейку , и так по циклу пока высота не станет нормой.  
 
как-то так. :)
 
"Переносить по словам" в данном примере не работает, а если бы господа взяли бы за труд посмотреть, то увидели бы, что галка стоит.  
А не работает из-за отсутствия пробелов - эксель считает, что слов нет. И верно считает :)  
 
Муторное это дело. Нужно:  
1. Моноширный шрифт (как уже верно посоветовали)  
2. Его размер.  
3. Ширина ячейки.  
4. Функция зависимости ширины символа от размера шрифта.  
 
Все это несложно, но муторно.  
 
Вариант 2.  
1. Знаем ширину ячейки в пикселах (х) и текст в ней .  
2. На отдельном листе помещаем текст в А1 и делаем Range("A1").EntireColumn.AutoFit  
3. Циклом уменьшаем на один символ и снова автофит.  
4. На выходе имеем текст в А1 и В1.  
 
x = 10  
Range("A1").Value = "длинный текст для разбивки"  
Range("A1").EntireColumn.AutoFit  
Do While Range("A1").ColumnWidth > x  
 Range("B1").Value = Right(Range("A1").Value, 1) & Range("B1").Value  
 Range("A1").Value = Left(Range("A1").Value, Len(Range("A1").Value) - 1)  
 Range("A1").EntireColumn.AutoFit  
Loop
Bite my shiny metal ass!      
 
Вариант 2 не требует моноширного шрифта.  
Можно оформить как функцию.  
Зато нужен отдельные лист/ячейка/книга/Application - выбрать по вкусу
Bite my shiny metal ass!      
 
{quote}{login=Лузер™}{date=17.12.2009 10:31}{thema=}{post}"Переносить по словам" в данном примере не работает, а если бы господа взяли бы за труд посмотреть, то увидели бы, что галка стоит.  
А не работает из-за отсутствия пробелов - эксель считает, что слов нет. И верно считает :){/post}{/quote}  
частично не согласен :)  
....пробует ....  
на экране все влезло в ячейку а высота все равно двойная :(  
 
ладно согласен. :)
Страницы: 1
Читают тему
Наверх