Перенос формулы в excel vba

 

Добрый вечер!

Вопрос, конечно, не жизненно важный, но все-таки.
В VBA прописана очень громоздкая формула,
activecell.formulaR1C1 = «=if(vlookup… очень много всего»
ее неудобно читать
можно ли ее разбить на несколько строчек?

Спасибо!

 

Sergei_A

Пользователь

Сообщений: 443
Регистрация: 05.01.2013

 

OSA913

Пользователь

Сообщений: 248
Регистрация: 03.01.2016

Подскажите как перенести на новую строку часть формулы, которую вставляю в массив vba? Пробелом и _ не переносится.

 

Александр П.

Пользователь

Сообщений: 1147
Регистрация: 16.03.2016

#4

08.11.2017 06:25:42

На примере из макрорекордера  

Код
 ActiveWorkbook.Worksheets("NNN.FFF").Sort.SortFields.Add Key:=Range("A1:A6") _
        , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal

То есть, после нужного символа ставите пробел? затем «_» и затем enter

 

Михаил Лебедев

Пользователь

Сообщений: 2856
Регистрация: 17.01.2013

#5

08.11.2017 07:13:20

Код
activecell.formulaR1C1 = "=if(vlookup... первая часть от очень много всего" _
& " вторая часть от очень много всего" _
& " третья часть от очень много всего"

Всё сложное — не нужно. Всё нужное — просто /М. Т. Калашников/

 

OSA913

Пользователь

Сообщений: 248
Регистрация: 03.01.2016

Покажите пожалуйста в моем примере(модуль1). Заранее спасибо!

Прикрепленные файлы

  • Массив.xlsm (14.06 КБ)

 

В Вашем примере — абсурдное выражение написано. И оно не соответствует тому вопросу, который Вы задаете.
activecell.formulaR1C1 = «=if(vlookup… очень много всего» — речь идет о СТРОКОВОМ ВЫРАЖЕНИИ, которое записывается в активную ячейку.
Строковое — т.к. заключено в кавычки.
А в Вашем модуле1 Вы пытаетесь присвоить переменной типа Variant не распознаваемый программой набор символов.
Я так подозреваю, в надежде на чудо :)
Лучше приложите пример, в котором Ваша формула внесена в ячейку, так будет проще понять, что это за формула и что она вычисляет.

Всё сложное — не нужно. Всё нужное — просто /М. Т. Калашников/

 

OSA913

Пользователь

Сообщений: 248
Регистрация: 03.01.2016

#8

11.11.2017 02:52:43

Цитата
Михаил Лебедев написал:
что это за формула и что она вычисляет.

Так вопрос то был не об этом, а переносе строки. Но спасибо за подсказку, формула в массиве вроде правильно вычисляет но у меня тоже есть сомнения что это оптимальный вариант. Я создам отдельную тему с вопросом по поводу того как правильно записывать такого рода формулы и буду благодарен вам за помощь.

Перенос части кода одного выражения VBA Excel на другую строку. Объединение нескольких операторов в одной строке. Программный перенос текста на новую строку.

Обратите внимание, что в этой статье слова «оператор» и «выражение» употребляются в одном значении. Они обозначают минимальный исполняющийся код VBA, расположенный в одной строке.

‘Каждая строка — один

‘оператор/выражение

Dim a As Long, b As Long

a = 12

b = a + 25

Перенос части выражения на новую строку

Деление длинного оператора на части улучшит его читаемость, сделает код процедуры более наглядным и компактным, не позволит ему уходить за пределы видимого экрана справа.

Переносимые на новые строки части кода одного выражения разделяются символом нижнего подчеркивания (_), который ставится обязательно после пробела. Этот символ указывает компилятору VBA Excel, что ниже идет продолжение текущей строки.

Пример 1
Процедуры без переноса и с переносом части кода операторов:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

‘Процедура без переноса

‘кода операторов

Sub Primer_1_1()

Dim a As Long, b As Long

a = 12 * 7 15 / 5 + 36

b = a + 25 + 36 * 15 5

MsgBox b

End Sub

‘Процедура с переносом

‘кода операторов

Sub Primer_1_2()

Dim a As Long, _

b As Long

a = 12 * 7 15 _

/ 5 + 36

b = a + 25 + 36 _

* 15 5

MsgBox b

End Sub

Вы можете скопировать код Примера 1 и проверить его работоспособность. В обоих случаях информационное окно MsgBox покажет одинаковый результат.

Иногда пишут, что для переноса кода добавляется пробел с символом подчеркивания. Так легче запомнить и не забыть, что перед знаком подчеркивания обязательно должен быть пробел. Но на самом деле, как видите из примера выше, пробелы уже есть в исходном коде, и мы добавили только символы подчеркивания.

Объединение операторов в одной строке

Множество коротких выражений в коде VBA Excel можно объединить в одной строке. Для этого используется символ двоеточия с пробелом «: », который указывает компилятору, что за ним идет следующий оператор.

Пример 2
Процедуры без объединения и с объединением операторов:

‘Процедура без объединения

‘операторов

Sub Primer_2_1()

Dim a As Long, b As Long, c As Long

a = 12

b = a + 25

c = a * b

MsgBox c

End Sub

‘Процедура с объединением

‘операторов

Sub Primer_2_2()

Dim a As Long, b As Long, c As Long

a = 12: b = a + 25: c = a * b: MsgBox c

End Sub

Во втором примере, как и в первом, информационное окно MsgBox покажет одинаковый результат.

Программный перенос текста на другую строку

Для программного переноса произвольного текста на новую строку в VBA Excel используются следующие ключевые слова:

  • vbCr – возврат каретки;
  • vbLf – перевод строки;
  • vbCrLf – возврат каретки и перевод строки, аналог нажатия клавиши «Enter»;
  • vbNewLine – новая строка.

Выражения «возврат каретки» и «перевод строки» идут от механических пишущих машин (печатных машинок).

Пример 3
Проверяем работоспособность перечисленных выше ключевых слов по программному переносу текста на новые строки в ячейке и информационном окне MsgBox:

Sub Primer_3()

‘Перенос текста в ячейке

Range(«B2») = «Первая строка + vbCr» & vbCr & _

«Вторая строка + vbLf» & vbLf & _

«Третья строка + vbCrLf» & vbCrLf & _

«Четвертая строка + vbNewLine» & vbNewLine & _

«Пятая строка»

‘Перенос текста в информационном окне

MsgBox «Первая строка + vbCr» & vbCr & _

«Вторая строка + vbLf» & vbLf & _

«Третья строка + vbCrLf» & vbCrLf & _

«Четвертая строка + vbNewLine» & vbNewLine & _

«Пятая строка»

End Sub

Получился следующий результат:

Результаты программного переноса текста на новую строку в ячейке и информационном окне MsgBox

Результат четырех переносов текста на новую строку

Как видно на изображении, ключевое слово «vbCr» не сработало в ячейке для переноса текста на другую строку, хотя сработало в информационном окне MsgBox.

Ключевые слова «vbCr» и «vbLf» я использовал исключительно для ознакомления, а на практике следует применять для переноса текста на новую строку – «vbCrLf» и «vbNewLine».

Перенос формул в макрос

anisimovaleksandr32

Дата: Понедельник, 25.01.2021, 12:44 |
Сообщение № 1

Группа: Пользователи

Ранг: Новичок

Сообщений: 40

Добрый день многоуважаемые форумчане!
Помогите с решением
В таблице в столбце 13 таблицы есть формула:

Которую хотел бы спрятать в макросы. Произвел запись макродекодером но терплю не удачу (((( почему то начинает ругаться

Аналогичная ситуация происходит и в двух других моих решениях
В столбце 14 данной таблице
И в ЗАКЛЮЧЕНИИ под таблицей…

Помогите пжл решить данные проблемы

[admin]Эта тема изначально не являлась готовым решением, но стала таковой в процессе решения задачи ТС
Универсальный макрос по переносу формул из ячеек листа в код VBA в сообщении № 17

К сообщению приложен файл:

7090601.xlsm
(81.0 Kb)

 

Ответить

Gustav

Дата: Понедельник, 25.01.2021, 15:35 |
Сообщение № 2

Группа: Друзья

Ранг: Старожил

Сообщений: 2398


Репутация:

986

±

Замечаний:
0% ±


начинал с Excel 4.0, видел 2.1

У Вас в коде пропал фрагмент формулы! Как корова языком слизала, а точнее — похоже, макрорекордер шалит не по-детски :(
Переводя на человеческий формат формулы (не R1C1), это средний коротенький фрагмент:
[vba]

Код

=ЕСЛИ(И(S18=»Раствор»;СЧЁТ(N31:N36)=3);СРЗНАЧ(N31:N36);ЕСЛИ(И(S18=»Раствор»;СЧЁТ(N31:N36)>3);»Только 3-и образца»;ЕСЛИ(СЧЁТ(N31:N36)>5;ОКРУГЛ(((СУММ(N31:N36)-НАИМЕНЬШИЙ(N31:N36;1)-НАИМЕНЬШИЙ(N31:N36;2))/4);2);ЕСЛИ(СЧЁТ(N31:N36)=5;ОКРУГЛ(((СУММ(N31:N36)-НАИМЕНЬШИЙ(N31:N36;1))/
4);2);ЕСЛИ
(СЧЁТ(N31:N36)=4;ОКРУГЛ(((СУММ(N31:N36)-НАИМЕНЬШИЙ(N31:N36;1))/3);2);ЕСЛИ(СЧЁТ(N31:N36)=3;ОКРУГЛ(((СУММ(N31:N36)-НАИМЕНЬШИЙ(N31:N36;1))/2);2);ЕСЛИ(СЧЁТ(N31:N36)<=2;ОКРУГЛ(СРЗНАЧ(N31:N36);2);)))))))

[/vba]
Вот этого фрагмента (в формате R1C1) и нет в Вашем макросе:
[vba][/vba]
И теперь если этот фрагмент (уже в формате R1C1)
[vba][/vba]
аккуратненько вставить в макрос в начало второй строки после переноса формулы на новую строчку:
[vba]

Код

Sub Макрос1()
    Range(«O31:O36»).Select
    ActiveCell.FormulaR1C1 = _
        «=IF(AND(R[-13]C[4]=»»Раствор»»,COUNT(RC[-1]:R[5]C[-1])=3),AVERAGE(RC[-1]:R[5]C[-1]),IF(AND(R[-13]C[4]=»»Раствор»»,COUNT(RC[-1]:R[5]C[-1])>3),»»Только 3-и образца»»,IF(COUNT(RC[-1]:R[5]C[-1])>5,ROUND(((SUM(RC[-1]:R[5]C[-1])-SMALL(RC[-1]:R[5]C[-1],1)-SMALL(RC[-1]:R[5]C[-1],2))/4),2),IF(COUNT(RC[-1]:R[5]C[-1])=5,ROUND(((SUM(RC[-1]:R[5]C[-1])-SMALL(RC[-1]:R[5]C[-1],1))/» & _
        «4),2),IF(COUNT(RC[-1]:R[5]C[-1])=4,ROUND(((SUM(RC[-1]:R[5]C[-1])-SMALL(RC[-1]:R[5]C[-1],1))/3),2),IF(COUNT(RC[-1]:R[5]C[-1])=3,ROUND(((SUM(RC[-1]:R[5]C[-1])-SMALL(RC[-1]:R[5]C[-1],1))/2),2),IF(COUNT(RC[-1]:R[5]C[-1])<=2,ROUND(AVERAGE(RC[-1]:R[5]C[-1]),2),)))))))»
End Sub

[/vba]
то всё волшебным образом заработает!


МОИ: Ник, Tip box: 41001663842605

Сообщение отредактировал GustavПонедельник, 25.01.2021, 15:48

 

Ответить

lebensvoll

Дата: Понедельник, 25.01.2021, 17:20 |
Сообщение № 3

Группа: Проверенные

Ранг: Старожил

Сообщений: 1002


Репутация:

30

±

Замечаний:
0% ±


Excel 2010

Gustav, спасибо огромное за ответ!!!

Прошу меня простить за то что создал тему не со своего профиля (не смог вспомнить свой старый). А когда вспомнил и во становил, то тему решил не удалять (((((

Цитата

похоже, макрорекордер шалит не по-детски

а счем это может быть связано (((( и можно ли это устранить (((( ведь у меня еще два кода есть которые получаются тоже записываются (((( не правильно (((((


Кто бы ты ни был, мир в твоих руках

 

Ответить

Gustav

Дата: Понедельник, 25.01.2021, 18:24 |
Сообщение № 4

Группа: Друзья

Ранг: Старожил

Сообщений: 2398


Репутация:

986

±

Замечаний:
0% ±


начинал с Excel 4.0, видел 2.1

а счем это может быть связано (((( и можно ли это устранить

А фиг знает… честно говоря, сам первый раз с таким сталкиваюсь… И поэтому я бы советовал в данном случае не пользоваться макрорекордером, а создавать формулы с помошью свойства FormulaLocal объекта Range. Преимущество, в первую очередь, состоит в том, что Вы берете за основу формулу в ее, так сказать, естественном виде, в котором она отображается в окне формул (ну, если только, конечно, Вы не ярый фанат адресации R1C1). Сопровождать формулу в таком естественном виде значительно проще, чем в формате R1C1. Пожалуй, при этом единственное, но вполне преодолимое, неудобство заключается в необходимости удвоения в коде VBA двойных кавычек, если таковые имеются в формуле.

В качестве узелка на память предложу примерную схему преобразования текста формулы из ячейки — в макрос VBA, воссоздающий эту формулу в той же ячейке.

1. Копируем текст формулы в Блокнот (Notepad) и разбиваем на несколько строк примерно равной длины. Разбивать можно в любом месте, хоть посредине функции — это нестрашно:
[vba]

Код

=ЕСЛИ(И(S18=»Раствор»;СЧЁТ(N31:N36)=3);СРЗНАЧ(N31:N36);ЕСЛИ(И(S18=»Раствор»;СЧЁТ(N31:N36)>3);
«Только 3-и образца»;ЕСЛИ(СЧЁТ(N31:N36)>5;ОКРУГЛ(((СУММ(N31:N36)-НАИМЕНЬШИЙ(N31:N36;1)-
НАИМЕНЬШИЙ(N31:N36;2))/4);2);ЕСЛИ(СЧЁТ(N31:N36)=5;ОКРУГЛ(((СУММ(N31:N36)-НАИМЕНЬШИЙ(N31:N36;1))
/4);2);ЕСЛИ(СЧЁТ(N31:N36)=4;ОКРУГЛ(((СУММ(N31:N36)-НАИМЕНЬШИЙ(N31:N36;1))/3);2);ЕСЛИ(СЧЁТ(N31:N36)=3;
ОКРУГЛ(((СУММ(N31:N36)-НАИМЕНЬШИЙ(N31:N36;1))/2);2);ЕСЛИ(СЧЁТ(N31:N36)<=2;ОКРУГЛ(СРЗНАЧ(N31:N36);2);)))))))

[/vba]
2. Далее в Блокноте же в получившемся текстовом фрагменте удваиваем все двойные кавычки. Т.е. вызываем окно замены по Ctrl+H и указываем Что: » и Чем: «» :
[vba]

Код

=ЕСЛИ(И(S18=»»Раствор»»;СЧЁТ(N31:N36)=3);СРЗНАЧ(N31:N36);ЕСЛИ(И(S18=»»Раствор»»;СЧЁТ(N31:N36)>3);
«»Только 3-и образца»»;ЕСЛИ(СЧЁТ(N31:N36)>5;ОКРУГЛ(((СУММ(N31:N36)-НАИМЕНЬШИЙ(N31:N36;1)-
НАИМЕНЬШИЙ(N31:N36;2))/4);2);ЕСЛИ(СЧЁТ(N31:N36)=5;ОКРУГЛ(((СУММ(N31:N36)-НАИМЕНЬШИЙ(N31:N36;1))
/4);2);ЕСЛИ(СЧЁТ(N31:N36)=4;ОКРУГЛ(((СУММ(N31:N36)-НАИМЕНЬШИЙ(N31:N36;1))/3);2);ЕСЛИ(СЧЁТ(N31:N36)=3;
ОКРУГЛ(((СУММ(N31:N36)-НАИМЕНЬШИЙ(N31:N36;1))/2);2);ЕСЛИ(СЧЁТ(N31:N36)<=2;ОКРУГЛ(СРЗНАЧ(N31:N36);2);)))))))

[/vba]
3. Далее в Блокноте же в начало каждой строки вставляем фрагмент: strFormula = strFormula & » (включая двойную кавычку), а в конец каждой строки — одну двойную кавычку » (чтобы закрыть строку):
[vba]

Код

strFormula = strFormula & «=ЕСЛИ(И(S18=»»Раствор»»;СЧЁТ(N31:N36)=3);СРЗНАЧ(N31:N36);ЕСЛИ(И(S18=»»Раствор»»;СЧЁТ(N31:N36)>3);»
strFormula = strFormula & «»»Только 3-и образца»»;ЕСЛИ(СЧЁТ(N31:N36)>5;ОКРУГЛ(((СУММ(N31:N36)-НАИМЕНЬШИЙ(N31:N36;1)-«
strFormula = strFormula & «НАИМЕНЬШИЙ(N31:N36;2))/4);2);ЕСЛИ(СЧЁТ(N31:N36)=5;ОКРУГЛ(((СУММ(N31:N36)-НАИМЕНЬШИЙ(N31:N36;1))»
strFormula = strFormula & «/4);2);ЕСЛИ(СЧЁТ(N31:N36)=4;ОКРУГЛ(((СУММ(N31:N36)-НАИМЕНЬШИЙ(N31:N36;1))/3);2);ЕСЛИ(СЧЁТ(N31:N36)=3;»
strFormula = strFormula & «ОКРУГЛ(((СУММ(N31:N36)-НАИМЕНЬШИЙ(N31:N36;1))/2);2);ЕСЛИ(СЧЁТ(N31:N36)<=2;ОКРУГЛ(СРЗНАЧ(N31:N36);2);)))))))»

[/vba]
4. Далее дописываем несколько операторов VBA — ДО и ПОСЛЕ фрагмента — и получаем законченную работоспособную процедуру:
[vba]

Код

Sub Macro1
    Dim strFormula As String

    strFormula = strFormula & «=ЕСЛИ(И(S18=»»Раствор»»;СЧЁТ(N31:N36)=3);СРЗНАЧ(N31:N36);ЕСЛИ(И(S18=»»Раствор»»;СЧЁТ(N31:N36)>3);»
    strFormula = strFormula & «»»Только 3-и образца»»;ЕСЛИ(СЧЁТ(N31:N36)>5;ОКРУГЛ(((СУММ(N31:N36)-НАИМЕНЬШИЙ(N31:N36;1)-«
    strFormula = strFormula & «НАИМЕНЬШИЙ(N31:N36;2))/4);2);ЕСЛИ(СЧЁТ(N31:N36)=5;ОКРУГЛ(((СУММ(N31:N36)-НАИМЕНЬШИЙ(N31:N36;1))»
    strFormula = strFormula & «/4);2);ЕСЛИ(СЧЁТ(N31:N36)=4;ОКРУГЛ(((СУММ(N31:N36)-НАИМЕНЬШИЙ(N31:N36;1))/3);2);ЕСЛИ(СЧЁТ(N31:N36)=3;»
    strFormula = strFormula & «ОКРУГЛ(((СУММ(N31:N36)-НАИМЕНЬШИЙ(N31:N36;1))/2);2);ЕСЛИ(СЧЁТ(N31:N36)<=2;ОКРУГЛ(СРЗНАЧ(N31:N36);2);)))))))»

    Range(«O31»).FormulaLocal = strFormula
End Sub

[/vba]


МОИ: Ник, Tip box: 41001663842605

 

Ответить

lebensvoll

Дата: Понедельник, 25.01.2021, 18:51 |
Сообщение № 5

Группа: Проверенные

Ранг: Старожил

Сообщений: 1002


Репутация:

30

±

Замечаний:
0% ±


Excel 2010

Gustav, СПАСИБО за такой подробнейший подход к записи
Я делал грубо.
1. Формулы и так создавались с трудом и долго правились и поправлялись
2. В VBA я не силен (((( форум во многом помогал. Но я эту процедуру делал так:
копировал формулу
вставал на нужную ячейку, включал «запись» и вставлял скопированную формулу, останавливал запись и потом уже получишвийся код-формулу подставлял куда нужно.
Если во многом формулы так получались на ура. То именно с этими тремя формулами возникали проблемы ((((
Буду пробовать Ваше предложенное

Но у меня же будет не одна формула а много их ((((

СПАСИБО ВАМ ОГРОМНЕЙШЕЕ


Кто бы ты ни был, мир в твоих руках

Сообщение отредактировал lebensvollПонедельник, 25.01.2021, 18:53

 

Ответить

RAN

Дата: Понедельник, 25.01.2021, 18:55 |
Сообщение № 6

Группа: Друзья

Ранг: Экселист

Сообщений: 5645

Но все преимущество FormulaLocal сводится на нет одной строчкой
[vba][/vba]


Быть или не быть, вот в чем загвоздка!

 

Ответить

Gustav

Дата: Понедельник, 25.01.2021, 19:18 |
Сообщение № 7

Группа: Друзья

Ранг: Старожил

Сообщений: 2398


Репутация:

986

±

Замечаний:
0% ±


начинал с Excel 4.0, видел 2.1


В чём подвох? Вроде, формула автоматически нормально протягивается в этом диапазоне (если об этом)…


МОИ: Ник, Tip box: 41001663842605

 

Ответить

RAN

Дата: Понедельник, 25.01.2021, 20:33 |
Сообщение № 8

Группа: Друзья

Ранг: Экселист

Сообщений: 5645

Протягивается, а не вставляется.


Быть или не быть, вот в чем загвоздка!

 

Ответить

lebensvoll

Дата: Среда, 27.01.2021, 21:31 |
Сообщение № 9

Группа: Проверенные

Ранг: Старожил

Сообщений: 1002


Репутация:

30

±

Замечаний:
0% ±


Excel 2010

:'( :'( :'(
ААААААААААААААААА блин ну почемууууу ну что не так то :'( :'( :'(
ПОМОГИТЕ ПЖЛ с решением!!!
Сев за другой комп у меня получилось произвести запись через Macro Recorder

НО стал записывать следующую формулу ((((( терплю не удачу за неудачей
И разбил формулу как предложил Gustav,

Но все равно ругается :'( и производил запись перебиванием формулы в ручную шаг за шагом и все равно не удачи :'(
Где мои ошибки почему так происходит
Сама формула:

К сообщению приложен файл:

3868329.xlsm
(84.1 Kb)


Кто бы ты ни был, мир в твоих руках

 

Ответить

gling

Дата: Четверг, 28.01.2021, 00:19 |
Сообщение № 10

Группа: Друзья

Ранг: Старожил

Сообщений: 2449


Репутация:

652

±

Замечаний:
0% ±


2010

Здравствуйте.
Слишком длинные формулы, очень много знаков. думаю по этому VBA и не берет. Попробуйте их загнать в диспетчер имен и потом вставлять по имени. Но в диспетчере тоже есть какое то ограничение по знакам. Если не получится всю формулу загнать в диспетчер, разбейте на несколько и там же соберите или соберите в ячейке.

К сообщению приложен файл:

9898101.xlsm
(85.2 Kb)


ЯД-41001506838083

 

Ответить

lebensvoll

Дата: Четверг, 28.01.2021, 00:27 |
Сообщение № 11

Группа: Проверенные

Ранг: Старожил

Сообщений: 1002


Репутация:

30

±

Замечаний:
0% ±


Excel 2010

gling, Спасибо Вам за ответ…
А если я создам «Имена», другие мои макросы не потеряют свою функциональность!?
Я за этим доком уже сижу неделю наверное ((((
То вначале в формулах находишь ошибки — правишь — записываешь макрос
То потом на работе сотрудники либо что то предумают или заметят ошибку и вновь пункт 1 :'(
Если сейчас еще и это проблема случится (пусть она возможно даже и не получится но еще и потеряют функциональность другие макросы с формулами) это будет АААААААА


Кто бы ты ни был, мир в твоих руках

 

Ответить

gling

Дата: Четверг, 28.01.2021, 00:31 |
Сообщение № 12

Группа: Друзья

Ранг: Старожил

Сообщений: 2449


Репутация:

652

±

Замечаний:
0% ±


2010

А какая связь между именами и макросами которые не обращаются к новому имени?


ЯД-41001506838083

 

Ответить

lebensvoll

Дата: Четверг, 28.01.2021, 00:34 |
Сообщение № 13

Группа: Проверенные

Ранг: Старожил

Сообщений: 1002


Репутация:

30

±

Замечаний:
0% ±


Excel 2010

Связь что они обращаются к ячейке а это ячейка имеет ИМЯ (и получится что два имени примерно G31 и втрое его имя стало «к примеру: цен»).

 

Ответить

gling

Дата: Четверг, 28.01.2021, 00:40 |
Сообщение № 14

Группа: Друзья

Ранг: Старожил

Сообщений: 2449


Репутация:

652

±

Замечаний:
0% ±


2010

Одинаковых имен у вас не будет, а обращаться по имени в Excel это нормально, конфликтов быть не должно.


ЯД-41001506838083

 

Ответить

lebensvoll

Дата: Четверг, 28.01.2021, 00:53 |
Сообщение № 15

Группа: Проверенные

Ранг: Старожил

Сообщений: 1002


Репутация:

30

±

Замечаний:
0% ±


Excel 2010

понял спасибо будем учиться ((((

 

Ответить

Gustav

Дата: Четверг, 28.01.2021, 19:55 |
Сообщение № 16

Группа: Друзья

Ранг: Старожил

Сообщений: 2398


Репутация:

986

±

Замечаний:
0% ±


начинал с Excel 4.0, видел 2.1

И разбил формулу как предложил Gustav,

lebensvoll, очень грустно, но Вы совсем не «вкурили» мой алгоритм из сообщения #4 и, извините, прёте своим первоначально проторенным путём… :(
Прочтите мой алгоритм еще раз внимательно, если действительно хотите успеха в этом деле.

Кстати, я нигде не упоминаю про делёжку строки по последовательности символов «& _» в конце строки (как это делает макрорекордер). Потому что при этом существует ограничение — не больше 25 строк. И оно нам не надо. Тем более, мы выяснили, что при таком подходе как раз и пропадают символы на «сгибах» формулы!

У меня же строки объединяются с помощью начальных фрагментов «strFormula = strFormula & «. И таким способом можно легко объединить не то, что 25 — 100 строк или даже 500.

И делайте всё препарирование формулы в Блокноте! В редакторе VBA среда будет пытаться автоматически подставлять, например, завершающие кавычки. Нам не нужно такой сомнительной услужливости а-ля «словарь T9» в телефоне. В редактор VBA возвращайтесь только на 4-м шаге алгоритма, когда формула уже корректно разбита по отдельным строкам. Ну, я же всё написал…


МОИ: Ник, Tip box: 41001663842605

 

Ответить

Gustav

Дата: Пятница, 29.01.2021, 10:53 |
Сообщение № 17

Группа: Друзья

Ранг: Старожил

Сообщений: 2398


Репутация:

986

±

Замечаний:
0% ±


начинал с Excel 4.0, видел 2.1

Вот, чтобы не пыхтеть вручную в Блокноте и не делать походу случайных ошибок, написал на коленках макрос-визард, реализующий алгоритм из моего сообщения #4.
Макрос выводит в Окно отладки (Ctrl+G в редакторе VBA, если не открыто) текст макроса по созданию формулы из указанной ячейки (ее адрес указывается в константе INS_FORM_ADR визарда). Соответственно, копируете этот текст из Окна отладки, вставляете в модуль книги и запускаете.
В макросе-визарде parseFormulaIntoMacro по желанию можно заменить .FormulaLocal на .FormulaR1C1 (или на любую другую: .Formula или .FormulaR1C1Local).


МОИ: Ник, Tip box: 41001663842605

Сообщение отредактировал GustavПятница, 29.01.2021, 10:59

 

Ответить

Gustav

Дата: Пятница, 29.01.2021, 12:06 |
Сообщение № 18

Группа: Друзья

Ранг: Старожил

Сообщений: 2398


Репутация:

986

±

Замечаний:
0% ±


начинал с Excel 4.0, видел 2.1


Серж, я как молодой писатель о большем и мечтать не могу! :D Главное, чтобы ТС, когда проснётся, смог найти эту свою тему. Кстати, надо отдать ему должное, название у темы очень удачное — по сути и никакой воды! :up:


МОИ: Ник, Tip box: 41001663842605

 

Ответить

RAN

Дата: Пятница, 29.01.2021, 12:31 |
Сообщение № 19

Группа: Друзья

Ранг: Экселист

Сообщений: 5645

№ 17 делает тему весьма интересной и полезной для готовых решений.
Но неплохо было бы это как-то указать в самом начале, а то могут и не дочитать до самого главного. <_<


Быть или не быть, вот в чем загвоздка!

 

Ответить

lebensvoll

Дата: Пятница, 29.01.2021, 12:57 |
Сообщение № 20

Группа: Проверенные

Ранг: Старожил

Сообщений: 1002


Репутация:

30

±

Замечаний:
0% ±


Excel 2010

Gustav, Спасибо за ответ и еще раз пояснения.
Просто сев за другой комп у меня получилось произвести запись Macro Recorder

Цитата

В таблице в столбце 13 таблицы есть формула:

как раз на ура и последующие также.
А вот с выводом и применение я уже нашел просто в просторах инета такое решение (но смысл один разбить формулу) ну а за то что только 25 строк (((( я только узнал
Применение Вашего метода для меня показалось сложным и не стал использовать (я просто не смог сообразить а как мне потом это воткнуть в свои коды)


Кто бы ты ни был, мир в твоих руках

Сообщение отредактировал lebensvollПятница, 29.01.2021, 13:00

 

Ответить

0 / 0 / 0

Регистрация: 27.12.2015

Сообщений: 10

1

Необходимо перенести формулу ИЗ ячейки В макрос

27.12.2015, 23:01. Показов 3108. Ответов 17


Студворк — интернет-сервис помощи студентам

Т.е
например в ячейке написали х+у
во второй и третьей ячейке значения икса и игрика
Каким оператором можно засунуть это формулу из ячейки в vba, чтобы далее можно было в вба работать с этой формулой. рассчитать например. необходимо именно такая логика, для того, чтобы удобно менять формулы, а не лесть в код.
И напишите, пожалуйста, кратенький пример.



0



Programming

Эксперт

94731 / 64177 / 26122

Регистрация: 12.04.2006

Сообщений: 116,782

27.12.2015, 23:01

17

1062 / 506 / 137

Регистрация: 27.02.2013

Сообщений: 1,451

27.12.2015, 23:33

2

skillblaze,посмотрите файл.В нем решается подобная задача для построения графика



1



0 / 0 / 0

Регистрация: 27.12.2015

Сообщений: 10

27.12.2015, 23:52

 [ТС]

3

Ух, что-то там как-то сложно написано. не понятно что к чему. и там как я понял, нужно вводить в появляющемся окне, а мне хотелось бы из ячейки. можете конкретней помочь?



0



1062 / 506 / 137

Регистрация: 27.02.2013

Сообщений: 1,451

27.12.2015, 23:55

4

Сейчас попробую
Там в Inputbox вводятся формулы и по ним строятся графики.Идея заключается в том,что пишется обычная формула с иксами,которая раскладывается на составляющие,а затем собирается уже в виде ссылок на ячейки.



0



0 / 0 / 0

Регистрация: 27.12.2015

Сообщений: 10

27.12.2015, 23:57

 [ТС]

5

OLEGOFF, ждус. заранее спасибо



0



OLEGOFF

1062 / 506 / 137

Регистрация: 27.02.2013

Сообщений: 1,451

28.12.2015, 00:11

6

Посмотрите ячейку В3,там цвет текста поменяйте чтобы видно было.Из этой ячейки текст преобразуется в формулу в ячейке А4 при помощи кода

Visual Basic
1
2
3
4
 With Range("A4")
        .FormulaLocal = [b3].Value
        .AutoFill Destination:=Range("A4:A1000"), Type:=xlFillDefault
    End With

Ну и протягивается по столбцу



0



0 / 0 / 0

Регистрация: 27.12.2015

Сообщений: 10

28.12.2015, 00:17

 [ТС]

7

OLEGOFF, но мне же нужно достать из ячейки формулу (пусть x+y), а потом чтобы вба посчитал её. как это сделать? не могу понять что дальше делать



0



1062 / 506 / 137

Регистрация: 27.02.2013

Сообщений: 1,451

28.12.2015, 00:19

8

Приложите файл с примером



0



0 / 0 / 0

Регистрация: 27.12.2015

Сообщений: 10

28.12.2015, 00:29

 [ТС]

9

Добавлено через 4 минуты
Понятно задача?
Не знаю, какой файл с примером скинуть, нету ничего) просто нужно для дальнейшего мне решить эту проблему

Добавлено через 2 минуты
нужно достать формулу из ячейки х+у ( х и у тоже из ячеек) и посчитать z= x+y в самом вба, чтобы потом работать с я



0



1062 / 506 / 137

Регистрация: 27.02.2013

Сообщений: 1,451

28.12.2015, 00:32

10

Если формула уже находится в ячейке,то она уже что-то подсчитала,т.к. она ссылается на другие ячейки.И какой смысл копировать формулу в код,если достаточно взять результат из этой ячейки



0



Казанский

15136 / 6410 / 1730

Регистрация: 24.09.2011

Сообщений: 9,999

28.12.2015, 00:38

11

Цитата
Сообщение от skillblaze
Посмотреть сообщение

Не знаю, какой файл с примером скинуть, нету ничего

Подумайте, составьте. Потому что вряд ли Вы сможете адаптировать чужой пример к своей задаче. Ну вот, пробуйте, меняйте формулу и значения х, у.

Visual Basic
1
2
3
4
5
6
7
Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Column = 1 Then
    Application.EnableEvents = False
    Range("B1").Value = Evaluate(Range("A1").Value)
    Application.EnableEvents = True
  End If
End Sub

Вложения

Тип файла: xls XplusY.xls (28.5 Кб, 8 просмотров)



1



0 / 0 / 0

Регистрация: 27.12.2015

Сообщений: 10

28.12.2015, 00:42

 [ТС]

12

OLEGOFF, кароче. я пишу метод сканирования на вба, и он перебирает множество иксов. поэтому для каждого икса мне нужно пересчитать мою функцию. поэтому мне необходимо достать формулу типа f(x1,x2,x3) из ячейки ну и возможность посчитать её. т.е в ячейке будет написано только формула например х+у без всяких равно и т.п



0



0 / 0 / 0

Регистрация: 27.12.2015

Сообщений: 10

28.12.2015, 00:45

 [ТС]

13

вот тут y1 и y2 формулы записаны вручную. а нужно чтобы брались из ячейки



0



15136 / 6410 / 1730

Регистрация: 24.09.2011

Сообщений: 9,999

28.12.2015, 00:57

14



0



0 / 0 / 0

Регистрация: 27.12.2015

Сообщений: 10

28.12.2015, 01:00

 [ТС]

15

Казанский, а можете адаптировать то, что там написано к моему? или минимально объяснисть что к чему. а то я немного далековат от этого



0



15136 / 6410 / 1730

Регистрация: 24.09.2011

Сообщений: 9,999

28.12.2015, 01:53

16

Лучший ответ Сообщение было отмечено skillblaze как решение

Решение

skillblaze, постараюсь, но вообще ваш код внушает священный ужас
Вы что-нибудь слышали про массивы, циклы?
Вот, вынес формулы для y1 и y2 на лист. Работает, и результат тот же, НО! Время увеличилось с 5 секунд до 1 мин 38 секунд Так с ранним связыванием, а с поздним было больше 2 мин.
Это плата за «интерактивность».
Вообще, опишите задачу словами. Возможно, найдется более подходящий инструмент, например «Поиск решения».



1



0 / 0 / 0

Регистрация: 27.12.2015

Сообщений: 10

28.12.2015, 02:24

 [ТС]

17

Казанский, знаком с циклами) однако, не придумал решения с ними. этот метод мне показался легче, через if и метки проще ходить по алгоритму. суть заключается в том, чтобы найти иксы, при которых будет выполняться критерии ( y1 и y2 в заданном диапозоне) и наименьшая себестоимость ( в данном случает х1*с1+х2*с2+х3*с3). спасибо, то что вы написали подошло. но, вот время капец как увеличилось. как можно исправить? писать через циклы? если я скину фото алгоритма, сможете помочь улучшить код?)



0



15136 / 6410 / 1730

Регистрация: 24.09.2011

Сообщений: 9,999

28.12.2015, 02:58

18

Цитата
Сообщение от skillblaze
Посмотреть сообщение

суть заключается в том, чтобы найти иксы, при которых будет выполняться критерии ( y1 и y2 в заданном диапозоне) и наименьшая себестоимость ( в данном случает х1*с1+х2*с2+х3*с3)

Загляните в https://www.cyberforum.ru/ms-excel/ , там 100500 тем про «оптимизацию производства», все делается Поиском решения без VBA и сам поиск обычно занимает секунду.



1



Оформление кода VBA

​Смотрите также​ объекта set WS​ j).End(xlUp).Row To 2​ Is Nothing Then​ у меня тоже​можно ли ее​: Private Sub Command2_Click()​ символы появляются в​ = «14» And​например, что-нибудь в​

​ и склеивания не​=ПЕЧСИМВ(B2)​ чтобы избежать случайного​ два различных непечатаемых​Источник: http://www.excelfunctions.net/VBA-Code-Presentation.html​ вложенного блока кода.​ переданную процедуре строку​Начиная практиковаться в написании​ = какой-то лист.​ Step -1 If​ Exit Sub Else​ есть сомнения что​ разбить на несколько​ a = MsgBox(«Струйные​ ячейках склеенных​ _ Cells(r, c.Column).Value​ духе :​ равны друг другу​=CLEAN(B2)​ склеивания двух соседних​ символа:​Перевел: Антон Андронов​

​ Такие увеличенные отступы​ Sub Find_String(sFindText As​ кода VBA, очень​Либо активировать НУЖНЫЙЛИСТ.ACTIVATE​ aws.Cells(i, j) <>​ j = x.Column​

Комментарии в VBA

​ это оптимальный вариант.​ строчек?​ принтеры печатают текст​Serge_007​ = «15» _​rn​ — выходим с​Скопируйте формулу во все​ слов. Если нужно​Возврат каретки​Автор: Антон Андронов​

​ помогают понять, где​ String) Dim i​ важно с самого​ , потом Rows.delete​ «» Then On​ Application.ScreenUpdating = False:​ Я создам отдельную​Спасибо!​ и изображения, разбрызгивая​: А если попробовать,​ Then Rows(r).Delete​;​ ошибкой If SearchRange.Count​ ячейки столбца.​ просто удалить переносы​(Carriage return, CR​

​Эта инструкция познакомит Вас​ каждый отдельный блок​ As Integer ‘​​ начала выработать хорошие​​ и потом снова​

​ Error Resume Next:​ Set aws =​ тему с вопросом​Sergei_A​ на бумагу мелкие​ прежде чем писать?​Kucherov​Sanja​ <> TextRange.Count Then​По желанию, можете заменить​ строк, оставьте поле​ или ASCII код​ с тремя способами​ кода начинается и​ переменная типа Integer​ привычки в оформлении​ перейти на лист​ Set ws =​ Sheets(«Общая база») For​ по поводу того​: да, можно. Пробел+​ капли чернил.» &​200?’200px’:»+(this.scrollHeight+5)+’px’);»>Const sDELIM As String​: Спасибо, извините, тупанул,​: Kuzmich, же Вам​ MergeIf = CVErr(xlErrRef)​ исходный столбец новым,​Заменить на​ 13) и​ удалить возвраты каретки​ заканчивается.​ для цикла ‘For’​ кода, чтобы в​ AWS и далее​ ThisWorkbook.Sheets(CStr(aws.Cells(i, j))) If​ i = aws.Cells(Rows.Count,​ как правильно записывать​ _​ vbLf & _​ = vbLf​ не поставил пробел​ показал​ Exit Function End​ с удалёнными переносами​(Replace With) пустым.​Перевод строки​ из ячеек в​Ещё один способ сделать​

​ Dim iRowNumber As​ дальнейшем написанный код​ цикл​ Err <> 0​ j).End(xlUp).Row To 2​ такого рода формулы​OSA913​ «Струйные принтеры популярны​Андрей​ перед «_»​Юрий М​

​ If ‘проходим по​ строк:​Нажмите кнопку​(Line feed, LF​ Excel. Вы также​ код более читаемым​ Integer ‘ переменная​ было легко читать​Lofak​ Then Set ws​

Отступы в коде VBA

​ Step -1 If​ и буду благодарен​: Подскажите как перенести​ из-за относительно невысокой​: СПАСИБО! Очень помогли!​Hugo​: excel_pl, Вы не​ все ячейкам, проверяем​​Выделите все ячейки в​​Заменить все​ или ASCII код​ узнаете, как заменить​ и облегчить работу​ типа Integer для​ и понимать, как​, либо вычистите​ = Sheets.Add: ActiveSheet.Name​

Переносы строк в VBA

​ aws.Cells(i, j) <>​ вам за помощь.​ на новую строку​ цены.» & vbLf​tarakano​: Эту кучу AND​ отписались в своих​ условие и собираем​ столбце​(Replace All) и​ 10). В Windows​ символы переноса строки​ с ним –​ хранения результата iRowNumber​ он работает.​все​ = aws.Cells(i, j):​

​ «» Then On​bosscs​ часть формулы, которую​ & _ «Существует​: подскажите пожалуйста, что​ оптимальнее разбить на​

​ старых темах, а​​ текст в переменную​​C​

​ наслаждайтесь результатом!​ используются оба символа​ другими символами. Все​ делать переносы и​ = 0 ‘​В процессе написания кода,​листы до того​ On Error GoTo​ Error Resume Next:​: Приветствую.​ вставляю в массив​

​ множество моделей таких​ нужно дописывать в​​ цепочку вложенных ЕСЛИ-ТО​​ уже создали новую.​ OutText For i​

​и нажатием​Плюсы:​ вместе, а в​ предложенные решения работают​ разбивать одну длинную​ последовательно посматриваем ячейки​ программист может иметь​ как переносить данные​ 0 aws.Cells.Copy ws.rows.delete​ Set ws =​Допустим есть в​ vba? Пробелом и​

​ принтеров, включая модели,​​ конце строки, если​​ — может когда-нибудь​ Или ответы не​ = 1 To​Ctrl+C​Доступно использование последовательных​ системах *NIX применяется​ в Excel 2013,​ строку кода на​ A1-A100, пока не​ совершенно чёткое представление​ из основной базы​ ws.Cells.PasteSpecial Paste:=xlPasteColumnWidths ws.Cells.PasteSpecial​

​ ThisWorkbook.Sheets(CStr(aws.Cells(i, j))) If​ проекте визуала длинная​
​ _ не переносится.​
​ специально предназначенные для​

​ текс длинный и​

office-guru.ru

Как удалить переносы строк (возвраты каретки) из ячеек в Excel 2013, 2010 и 2007

​ сэкономите даже пару​ интересуют?​ SearchRange.Cells.Count If SearchRange.Cells(i)​скопируйте данные в​ или вложенных формул​ только перевод строки.​ 2010, 2007 и​ несколько коротких. В​ будет найдено значение​ о том, что​Добавлено через 5 минут​ Paste:=xlPasteFormats End If​

Удаляем переносы строк в Excel

​ Err <> 0​ строчка, как ее​Александр П.​ печати цветных фотографий.»​ не помещается в​ минут работы кода…​excel_pl​ Like Condition Then​ буфер обмена.​ для сложной проверки​Будьте внимательны:​ 2003.​ VBA, чтобы разбить​​ ‘sFindText’ For i​​ за код он​

​например так​ aws.Rows(i).Copy ws.Cells(Rows.Count, 1).End(xlUp).Offset(1)​ Then Set ws​ записать в 2​: На примере из​ & vbLf &​ одной строке?​ кто знает что​: Вопрос решён.​ OutText = OutText​Далее выделите ячейку​

​ текста в обрабатываемой​В Excel встречаются​Переносы строк могут появиться​ строку, нужно вставить​

  • ​ = 1 To​ пишет и как​Sub ClearPages() For​ End If: Next​
  • ​ = Sheets.Add: ActiveSheet.Name​ строки?​ макрорекордера ActiveWorkbook.Worksheets(«NNN.FFF»).Sort.SortFields.Add Key:=Range(«A1:A6»)​ _ «Недостатки. В​что б было​
  • ​ там будет в​Всем спасибо.​ & TextRange.Cells(i) &​B2​

​ ячейке. Например, можно​​ оба варианта. При​ в тексте по​ символы » _»​ 100 If Cells(i,​ этот код должен​ i = 1​ End Sub​ = aws.Cells(i, j):​Alex77755​ _ , SortOn:=xlSortOnValues,​

​ большинстве случаев струйные​ понятнее: Private Sub​ другой раз.​Kucherov​ Delimeter Next i​, нажмите сочетание клавиш​ удалить возвраты каретки,​ импорте из файлов​ разным причинам. Обычно​​ (пробел+подчёркивание) непосредственно перед​​ 1).Value = sFindText​ работать. Но нужно​ To Sheets.Count Set​​Lofak​​ On Error GoTo​: В нужном месте:​ Order:=xlAscending, DataOption:=xlSortNormalТо есть,​ принтеры работают медленнее​ Command2_Click() a =​JayBhagavan​: Добрый день!​

​ ‘выводим результаты без​​Shift+F10​ а затем найти​.txt​​ возвраты каретки встречаются​​ переносом строки. Это​​ Then ‘ найдено​​ позаботиться и о​ ws = Sheets(i)​: Что-то все равно​ 0 aws.Cells.Copy ws.Cells.PasteSpecial​ Пробел, Подчёркивание(«_»), Ентер​​ после нужного символа​​ (в страницах в​ MsgBox(«Г‘òðóéГ*ûå ïðèГ*òåðû ГЇГҐГ·Г*ГІГ*ГѕГІ​: Пробел, нижнее подчёркивание,​​Как можно перенести​​ последнего разделителя MergeIf​и выберите​ лишние начальные или​или​ в рабочей книге,​ сообщает компилятору VBA,​

Удаляем возвраты каретки вручную

​ совпадение с переданной​​ том, чтобы, вернувшись​ If ws.Name <>​

​ не так, не​​ Paste:=xlPasteColumnWidths ws.Cells.PasteSpecial Paste:=xlPasteFormats​:(

​gaw​ ставите пробел? затем​ минуту), чем лазерные​​ ГІГҐГЄГ±ГІ ГЁ èçîáðГ*æåГ*ГЁГї,​​ энтер.​

  1. ​ строки в Макросе?​ = Left(OutText, Len(OutText)​Вставить​ конечные пробелы, или​.csv​Удаляем переносы строк в Excel
  2. ​ например, когда текст​​ что текущая строка​​ строкой ‘ сохраняем​ к работе спустя​​ «Общая база» Then​​ чистит​
  3. ​ End If aws.Rows(i).Copy​​: (наверное неправильно понял​​ «_» и затем​ принтеры, и требуют​​ Г°Г*çáðûçãèâГ*Гї Г*Г* ГЎГіГ¬Г*ГЈГі​​Символ переноса в VBA​ Нажимаю пробел -​ — Len(Delimeter)) End​(Insert).​ лишние пробелы между​данные обычно содержат​
  4. ​ скопирован с веб-страницы,​​ кода продолжается на​​ номер текущей строки​ полгода, не пришлось​ ws.Rows.Delete Next End​Burk​ ws.Cells(Rows.Count, 1).End(xlUp).Offset(1) End​ )​ enter​ регулярной замены картриджа​ ìåëêèå ГЄГ*ïëè Г·ГҐГ°Г*ГЁГ«.​: Помогите пожалуйста!​​ выдаёт ошибку. Очень​​ Function​Удаляем переносы строк в Excel
  5. ​Удалите вспомогательный столбец.​​ словами.​​ возвраты каретки и​ когда они уже​Удаляем переносы строк в Excel

Удаляем переносы строк при помощи формул Excel

​ следующей строке.​​ и выходим из​ ломать голову, пытаясь​ Sub​:​ If: Next End​»a» & vbCrLf​Михаил Лебедев​ с чернилами», ,​ ÑòðóéГ*ûå ïðèГ*òåðû ïîïóëÿðГ*Г»​В интернете есть​ неудобно.​

​Сцепка происходит по​Плюсы:​В некоторых случаях переносы​ переводы строки. Когда​ есть в рабочей​Следующий пример демонстрирует, как​ цикла iRowNumber =​ понять, что должен​Lofak​Ну и его надо​​ Sub​​ & «b»​

​: activecell.formulaR1C1 = «=if(vlookup…​​ «Справка») End Sub​ ГЁГ§-Г§Г* îòГ*îñèòåëüГ*Г® Г*åâûñîêîé​ такой макрос:​

  1. ​Мне желательно в​ принципу:​Создаём один раз​ строк необходимо удалять,​​ перенос строки вводится​​ книге, полученной от​
  2. ​ при помощи переносов​ i Exit For​ делать этот код.​: Благодарю вас, то​ поставить до цикла​Может кто нибудь​»a» & vbNewLine​
    • ​ первая часть от​tarakano​ öåГ*Г». Ñóùåñòâóåò Г¬Г*îæåñòâî​200?’200px’:»+(this.scrollHeight+5)+’px’);»>Sub MergeToOneCell()​ данной программе перенести​Текст 1, Текст​

      ​ – используем снова​
      ​ чтобы в дальнейшем​

    • ​ вручную нажатием​ клиента, или, когда​ строк можно сделать​ End If Next​ Ещё более неприятная​ что нужно!​ по I​ помочь добавить функцию​ & «b»​ очень много всего»​

      ​: спасибо за оба​
      ​ ìîäåëåé ГІГ*ГЄГЁГµ ïðèГ*òåðîâ,​

    • ​Const sDELIM As​ строки, где задаются​ 2​ и снова с​

      ​ использовать текст в​
      ​Alt+Enter​

    Удаляем переносы строк в Excel

  3. ​ мы сами добавляем​ длинные строки кода​
  4. ​ i ‘ сообщение​ ситуация – когда​Burk​А на то,​
    • ​ очистки дополнительных листов​»a» & Chr(13)​​ _ & «​​ способа, теперь буду​​ âêëþ÷Г*Гї ìîäåëè, ñïåöèГ*ëüГ*Г®​​ String = «​ данные (вторая строка)​
    • ​Вопрос​​ любой рабочей книгой.​​ качестве аргументов функций,​​, Excel вставляет только​​ их нажатием клавиш​​ гораздо более понятными​​ во всплывающем окне​
    • ​ кто-то другой станет​

Удаляем переносы строк при помощи макроса VBA

​:​​ что вам пишут​ перед копированием туда​ + Chr(10) &​ вторая часть от​

​ знать​​ ïðåäГ*Г*Г§Г*Г*Г·ГҐГ*Г*ûå äëÿ ГЇГҐГ·Г*ГІГЁ​ » ‘символ-разделитель​

​ и переносить строки,​Как сделать чтобы​Минусы:​ не внося изменения​ символ перевода строки.​

​Alt+Enter​ и легко читаемыми.​ сообщает пользователю, ‘​ продолжать Вашу работу​Lofak​ вы внимания не​ информации из первого​ «b»​ очень много всего»​Тогда еще один:​ öâåòГ*ûõ ôîòîãðГ*ГґГЁГ©. ÍåäîñòГ*ГІГЄГЁ.​Dim rCell As​ где If, там​

​ разделитель был не​Требуется хотя бы​ в исходные ячейки.​ Если же файл​.​Посмотрите на этот оператор​ найдена ли строка,​

​ над кодом и​, просто хотелось, чтобы​
​ обращаете??? А цикл​
​ листа, что бы​

​Lofak​

office-guru.ru

Как сделать перенос строки с использованием VBA?

​ _ & «​​Private Sub Command2_Click()​ Г‚ áîëüøèГ*Г±ГІГўГҐ ñëó÷Г*ГҐГў​ Range​ стоит AND и​ «, «, а​ базовое знание VBA.​ Результат можно использовать,​.csv​Какой бы ни была​If​ и если найдена​ не сможет понять,​ вы, учитывая подсказки,​ по по строкам​ информация не дублировалась​: Доброго времени суток,​ третья часть от​ Dim St as​ ñòðóéГ*ûå ïðèГ*òåðû Г°Г*áîòГ*ГѕГІ​Dim sMergeStr As​ у м меня​ перенос текста на​Макрос VBA из следующего​ например, как аргумент​получен от поклонника​ причина их появления,​:​ – сообщает номер​ как он работает.​ сами это сделали,​ у вас в​ при каждом последующем​ имеется таблица exel​ очень много всего»​ String St =​ ìåäëåГ*Г*ГҐГҐ (Гў Г±ГІГ°Г*Г*ГЁГ¶Г*Гµ​ String​
​ будет много «AND»​ следующую строчку?​
​ примера удаляет возвраты​ функции​
​ Linux, Unix или​
​ сейчас перед нами​If (index =​ строки If iRowNumber​Эта статья посвящена комментариям,​ но, видимо, рано​
​ строке 6​ запуске?​
​ в которую вносятся​
​OSA913​

​ «Струйные принтеры печатают​​ Гў ìèГ*ГіГІГі), Г·ГҐГ¬​If TypeName(Selection) <>​ и много «OR»​Т.е., чтобы сцепка​ каретки из всех​ПРОСМОТР​ другой подобной системы,​ стоит задача удалить​ 1 And sColor1​ = 0 Then​ отступам в коде​Lofak​Lofak​Burk​ данные, с некоторыми​: Покажите пожалуйста в​ текст и изображения,​ Г«Г*çåðГ*ûå ïðèГ*òåðû, ГЁ​ «Range» Then Exit​ и хотел бы​ происходила по принципу:​ ячеек на активном​(LOOKUP).​ то готовьтесь к​ возвраты каретки, так​ = «красный») Or​

​ MsgBox «Строка «​​ и переносам строк​: Скорее уже поздно,​, под ЕГО имеется​: Rows.Delete​ дополнительными параметрами, нужно​

​ моем примере(модуль1). Заранее​​ разбрызгивая на бумагу​ òðåáóþò ðåãóëÿðГ*îé Г§Г*ìåГ*Г»​ Sub ‘если выделены​​ каждое условие в​​Текст 1​
​ листе.​Минусы:​​ встрече только с​​ как они мешают​

​ (index = 2​​ & sFindText &​ – элементам, которые​

​ когда-то учился, но​​ ввиду оператор чистки,​Lofak​ что бы данные​ спасибо!​ мелкие» & vbNewLine​ ГЄГ*ðòðèäæГ* Г± Г·ГҐГ°Г*ГЁГ«Г*ìè»,​

​ не ячейки -​​ отдельную строку записывать,​
​Текст 2​

planetaexcel.ru

Перенос строки в коде. Макросы

​Sub RemoveCarriageReturns() Dim​​Потребуется создать вспомогательный​
​ символом перевода строки.​ выполнять поиск фраз​ And sColor1 =​ » не найдена»​ делают код аккуратным​
​ так толком и​ а вы засунули​: Добавить новую строку?​ копировались на другие​Михаил Лебедев​ St = St​ ,»Г‘ГЇГ°Г*ГўГЄГ*») End Subтекс​ выходим​ а не в​Sanja​ MyRange As Range​ столбец и выполнить​Плюсы:​ и приводят к​ «синий») Or (index​ Else MsgBox «Строка​ и понятным.​ не освоил программирование,​ его внутрь цикла​End If aws.Rows(i).Delete​ листы в зависимости​: В Вашем примере​ + » капли​ в msgbox длинный​With Selection​ одну длинную. Public​: Function MergeIf(TextRange As​ Application.ScreenUpdating = False​ множество дополнительных шагов.​Этот способ самый​ беспорядку в столбце​ = 3 And​ » & sFindText​Самое важное для написания​ да и долгое​ ?????​ ws.Cells(Rows.Count, 1).End(xlUp).Offset(1) End​ от категории, например​ — абсурдное выражение​ чернил. Струйные принтеры​ и не помещается​For Each rCell​

​ Sub Delete_Privetik() Dim​​ Range, SearchRange As​ Application.Calculation = xlCalculationManual​
​Добавьте вспомогательный столбец в​ быстрый.​ при включении режима​ sColor1 = «зеленый»)​ & » найдена​

​ аккуратного и понятного​​ время занимался другим​Lofak​ If aws.Rows(i).Copy ws.Cells(Rows.Count,​ вносим мы в​ написано. И оно​

​ популярны из-за относительно​​ в одну строку,​ In .Cells​ b As Range,​

​ Range, Condition As​​ For Each MyRange​ конце данных. В​Минусы:​ переноса текста.​ Or (index =​ в ячейке A»​ кода – чаще​ делом, сейчас периодически​: К сожалению не​

​ 1).End(xlUp).Offset(1) End If:​​ таблицу тетрациклин, в​ не соответствует тому​

planetaexcel.ru

Символ переноса в VBA

​ невысокой цены. Существует​​ как разделить его​
​sMergeStr = sMergeStr​ c As Range,​
​ String) Dim i​
​ In ActiveSheet.UsedRange If​ нашем примере он​Никаких дополнительных плюшек​
​Все три представленных способа​ 4 And sColor1​
​ & iRowNumber End​ оставлять комментарии. Комментарии​
​ возникает такая необходимость,​ пойму, перед?​ Next​ разделе категория указываем​ вопросу, который Вы​
​ " & vbNewLine​
​ на 2 -​ & sDELIM &​
​ d As Range,​ As Long 'если​ 0 < InStr(MyRange,​ будет называться​
​Вот так можно удалить​
​ довольно быстры. Выбирайте​ = "коричневый") Then​ If End Sub​
​ – это строки​ пытаюсь что-то вспоминать,​
​For i =​
​Burk​ что он антибиотик,​ задаете.​ St = St​
​ 3 строки?​
​ rCell.Text 'собираем текст​

​ LastRow As Long,​ диапазоны проверки и​ Chr(10)) Then MyRange​
​1 line​ переносы строк при​ тот, который Вам​
​При помощи переносов строк​Не расстраивайтесь, если какую-то​

​ в коде, которые​​ а что-то осваивать​ aws.Cells(Rows.Count, j)​:​ следовательно вся строка​activecell.formulaR1C1 = «=if(vlookup…​

​ + «множество моделей​​gaw​ из ячеек​ r As Long​ склеивания не равны​ = Replace(MyRange, Chr(10),​

​.​​ помощи инструмента «​ больше подходит:​
​ тот же оператор​ часть кода, показанного​

​ исполняют роль заметок​​ заново. В любом​

excelworld.ru

Перенос длинных строк в редакторе кода

​Burk​​Lofak​ переносится на лист​ очень много всего»​ таких принтеров, включая​: Private Sub Command2_Click()​Next rCell​
​ On Error Resume​ друг другу -​ «») End If​В первой ячейке вспомогательного​Найти и заменить​Удаляем все переносы строк​If​ выше, не удалось​ и помогают разобраться,​ случае вам огромное​:​, ну, конечно, перед​ 2, в антибиотики.​ — речь идет​ модели, специально предназначенные​ a = MsgBox(«Струйные​Application.DisplayAlerts = False​ Next Set b​ выходим с ошибкой​ Next Application.ScreenUpdating =​ столбца (C2) введите​»:​ вручную, чтобы быстро​может быть записан​ понять – далее​ какие действия выполняет​ спасибо за помощь!​Lofak​

​ копированием поставить чистку.​​ Вносим витамин, переносится​ о СТРОКОВОМ ВЫРАЖЕНИИ,​ » & vbNewLine​ принтеры печатают текст​ ‘отключаем стандартное предупреждение​ = Range(«g2:g2500»).Cells Set​ If SearchRange.Count <>​ True Application.Calculation =​ формулу для удаления/замены​Выделите все ячейки, в​ навести порядок на​ вот так:​ в учебнике мы​ та или иная​Burk​, НУ ЭТО УЖ​ Только надо активировать​ на лист 3​ которое записывается в​ St = St​ и изображения, разбрызгивая​ о потере текста​ c = Range(«bi2:bi2500»).Cells​ TextRange.Count Then MergeIf​ xlCalculationAutomatic End Sub​ переносов строк. Ниже​ которых требуется удалить​ одном листе.​If (index =​ рассмотрим эту тему​

​ часть кода.​​:​ КУ-КУ. Перед это​ страницу , на​ витамины.​ активную ячейку.​ + «для печати​ на бумагу мелкие»​.Merge Across:=False ‘объединяем​ On Error GoTo​ = CVErr(xlErrRef) Exit​Если Вы не слишком​ приведены несколько полезных​ возвраты каретки или​Удаляем переносы строк при​ 1 And sColor1​ подробнее. Цель приведённого​Комментарии не участвуют в​Lofak​ не внутрь строки​ которую пойдёт запись,​Lofak​Строковое — т.к.​ цветных фотографий.» &​ & vbNewLine &​ ячейки​

​ 0 If b​​ Function End If​ близко знакомы с​ формул для различных​

​ заменить их другим​
​ помощи формул и​ = «красный») Or​ примера – продемонстрировать,​ процессе выполнения программы​, понял, обращайтесь.​ кода, а перед​ либо проще ws.rows.delete​: Пример таблицы во​ заключено в кавычки.​ vbNewLine & vbNewLine​ _ » капли​Application.DisplayAlerts = True​ Is Nothing Then​ For i =​ VBA, рекомендую изучить​ случаев:​ символом.​ настраиваем таким образом​ _ (index =​ как при помощи​ и не влияют​Новичек​ ней. Как мне​ ведь ws у​ вложениях​А в Вашем​ St = St​ чернил. Струйные принтеры​.Item(1).Value = Mid(sMergeStr,​ Exit Sub Else​ 1 To SearchRange.Cells.Count​ статью о том,​Эта формула подходит для​Нажмите​ комплексную обработку текстовых​ 2 And sColor1​

CyberForum.ru

Перенос формулы в VBA на новую строку

​ комментариев поясняется каждый​​ на результат работы​
​: MsgBox «Длинное предложение​ кажется, перенос осуществляется​ вас лист, в​
​Прошу по возможности​ модуле1 Вы пытаетесь​
​ + «Недостатки. В​ популярны из-за относительно​
​ 1 + Len(sDELIM))​
​ LastRow = b.Rows.Count​ If SearchRange.Cells(i) Like​ как вставить и​
​ использования с комбинациями​

​Ctrl+H​​ данных в ячейках.​ = «синий») Or​

​ блок кода.​​ макроса. Каждая строка,​ ……»​ не AWS а​ который идет перенос?​ помочь реализовать​ присвоить переменной типа​

​ большинстве случаев струйные​​ невысокой цены. Существует​ ‘добавляем к объед.ячейке​ LastRow = LastRow​ Condition Then If​ выполнить код VBA​ возврат каретки /​, чтобы вызвать диалоговое​Используем макрос VBA, чтобы​

​ _ (index =​​Часто программисты ленятся добавлять​ начинающаяся апострофом (‘),​Подскажите как осуществляется​ WS​ Ну и его​unick12345​ Variant не распознаваемый​ принтеры работают медленнее»​ » & vbNewLine​

​ суммарный текст​​ + b.Row -​ MergeIf <> Empty​ в Excel.​

​ перенос строки, характерными​​ окно​ очистить от переносов​ 3 And sColor1​ подробные комментарии к​ будет считаться в​ перенос текста на​
​WS.rows.delete For i​ надо поставить до​: переносится или копироваться?​ программой набор символов.​ & vbNewLine St​ & _ «множество​
​End With​ 1 Application.ScreenUpdating =​
​ Then MergeIf =​Урок подготовлен для Вас​ для Windows и​Найти и заменить​ строк несколько рабочих​
​ = «зеленый») Or​ своему коду, но,​ VBA комментарием. Редактор​:)
​ другую строку?​ = aws.Cells(Rows.Count, j).End(xlUp).Row​ цикла по I​Lofak​Я так подозреваю,​ = St +​ моделей таких принтеров,​End Sub​

​ False For r​​ MergeIf & TextRange.Cells(i)​ командой сайта office-guru.ru​ для UNIX.​(Find and Replace).​ книг.​ _ (index =​ поверьте, затраченные усилия​ VBA в Excel​Новичек​ To 2 Step​Lofak​: Копироваться​ в надежде на​ «(в страницах в​ включая модели, специально​А как сделать​ = LastRow To​

planetaexcel.ru

Перенос строки

​ & vbCrLf Else​​Источник: https://www.ablebits.com/office-addins-blog/2013/12/03/remove-carriage-returns-excel/​
​=ПОДСТАВИТЬ(ПОДСТАВИТЬ(B2;СИМВОЛ(13);»»);СИМВОЛ(10);»»)​Поставьте курсор в поле​Замечание:​ 4 And sColor1​ оправдают себя с​

​ выделит такую строку​​: MsgBox «Длинное предложение​ -1​

​: Вот так?​​Нашел скрипт, который​ чудо​
​ минуту), чем лазерные​ предназначенные » &​
​ чтобы место пробела​ b.Row Step -1​
​ MergeIf = TextRange.Cells(i)​Перевел: Антон Андронов​=SUBSTITUTE(SUBSTITUTE(B2,CHAR(13),»»),CHAR(10),»»)​

CyberForum.ru

Перенос строк с условием

​Найти​​Первоначально термины «Возврат​ = «коричневый») Then​ избытком! Несколько минут,​ зелёным цветом шрифта,​ ……»​Lofak​Sub Main() Dim​ выполняет необходимую мне​Лучше приложите пример,​ принтеры, и требуют​ vbNewLine & _​ в строке​ If Cells(r, b.Column).Value​ & vbCrLf End​Автор: Антон Андронов​Следующая формула подходит для​(Find what) и​ каретки» и «Перевод​Если рассмотренный оператор​

​ потраченных на написание​​ чтобы с первого​Подскажите как осуществляется​
​: Да, я так​ i As Long,​

​ функцию, но при​​ в котором Ваша​

​ регулярной замены картриджа​​ «для печати цветных​
​Const sDELIM As​ = «14» And​ If End If​excel_pl​ замены переноса строки​ нажмите​ строки» использовались при​If​
​ понятного комментария, могут​ взгляда было понятно,​ перенос текста на​ и имел ввиду,​ j As Integer,​ каждом запуске копирует​ формула внесена в​ с чернилами» a​ фотографий.» & vbNewLine​ String = «​ Cells(r, c.Column).Value =​ Next i End​: Код сцепляет столбец​ любым другим символом​Ctrl+J​ работе на печатных​разбит на четыре​ сэкономить Вам долгие​ что это комментарий,​ другую строку?​ но в таком​ ws As Worksheet,​ все строки, в​ ячейку, так будет​ = MsgBox(St, vbInformation​ & vbNewLine &​ » ‘символ-разделитель​ «15» Then Rows(r).Delete​ Function​ по критериюСкрытый текст​ (например, «, »​. На первый взгляд​ машинках и обозначали​ строки, то составляющие​
​ часы в будущем.​ который не будет​Лузер​ случае выпадает ошибка,​ aws As Worksheet,​ том числе те,​ проще понять, что​ + vbOKOnly, «Справка»)​ _ «Недостатки. В​

​вставлялся символ переноса​​ Next r End​

​Kuzmich​​ Option Compare Text​
​ – запятая +​ поле покажется пустым,​ две различных операции.​ его блоки c​Другой приём, делающий написанный​

​ выполняться.​​: Очевидно по размеру​​ что переменная не​​ x As Range​ которые уже скопировал​ это за формула​ End SubvbCrLf​ большинстве случаев струйные​ строки?​ If​: В ячейке включить​ Function MergeIf(TextRange As​ пробел). В таком​ но если посмотрите​ Любознательный читатель может​

​ условиями видны гораздо​​ код более читаемым​
​Ниже продемонстрировано, как при​ окна.​ задана:​ Set x =​ ранее​ и что она​Maksymromaniuk​ принтеры работают медленнее»​anvg​The_Prist​ перенос по словам​ Range, SearchRange As​ случае строки не​ внимательно, то увидите​ самостоятельно найти подробную​ более наглядно. Этот​ – правильно расставлять​ помощи комментариев поясняется​Можете сами переносить​Burk​ Rows(1).Find(«Садовник», , ,​Sub Main() Dim​ вычисляет.​: Добрый вечер!​ & vbNewLine &​: В Excel для​: А что, в​ Dim OutText As​ Range, Condition As​ будут объединены и​ в нём маленькую​ информацию об этом​ пример иллюстрирует, как​ отступы. В приведённом​

​ работа простой процедуры​​ на другую строку:​:​ xlWhole) If x​

​ i As Long,​​OSA913​​Вопрос, конечно, не​ _ «(в страницах​ Range можно использовать​
​ Яндексе забанили?​ String Delimeter =​ String) Dim Delimeter​ лишние пробелы не​ точку.​ в интернете.​ аккуратное оформление может​
​ выше примере видно,​​Sub​MsgBox «первая строка»​Lofak​ Is Nothing Then​ j As Integer,​

​: Так вопрос то​​ жизненно важный, но​ в минуту), чем​
​ 2 типа символа-переноса​If Cells(r, b.Column).Value​

​ Chr(10)​​ As String, i​​ появятся.​​В поле​Компьютеры и программное обеспечение​ сделать код более​ что отступ сделан​:​ & Chr(10) &​, я вам написал​ Exit Sub Else​
​ ws As Worksheet,​ был не об​ все-таки.​ лазерные принтеры, и​

​ строки vbLf и​​ = «14» And​excel_pl​ As Long Delimeter​=СЖПРОБЕЛЫ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(B2;СИМВОЛ(13);»»);СИМВОЛ(10);», «)​Заменить на​ для работы с​

​ читаемым и привести​​ для кода внутри​​’ процедура Sub​​ «вторая строка»​ ответ на вопрос​ j = x.Column​ aws As Worksheet,​ этом, а переносе​В VBA прописана​ требуют регулярной замены​ vbNewLine​
​ _ Cells(r, c.Column).Value​: А каких-нибудь спец.​ = «, «​=TRIM(SUBSTITUTE(SUBSTITUTE(B2,CHAR(13),»»),CHAR(10),», «)​(Replace With) введите​ текстами разрабатывались с​
​ в результате к​​ главной процедуры​​ для просмотра диапазона​​Новичек​ о чистке листа.​ Application.ScreenUpdating = False:​
​ x As Range​
​ строки. Но спасибо​
​ очень громоздкая формула,​ картриджа с чернилами»,​андрей​ = «15» Then​ символов вместо запятой​ ‘символы-разделители (можно заменить​А вот так можно​ любое значение для​

​ учётом особенностей печатных​​ меньшему количеству ошибок​Sub​

​ ячеек A1-A100 активного​​: Да, помогло. Спасибо.​​ В вашем коде​​ Set aws =​ Set x =​ за подсказку, формула​activecell.formulaR1C1 = «=if(vlookup…​

​ vbInformation + vbOKOnly,​​: Если vbLf или​ _ Rows(r).Delete​ для строчки «​ на пробел или​ удалить все непечатаемые​ вставки вместо возвратов​ машинок. Вот почему​ и путаницы.​и далее отступ​ ‘ листа и​Новичек​ до оператора чистки​ Sheets(«Общая база») For​

​ Rows(1).Find(«Садовник», , ,​​ в массиве вроде​​ очень много всего»​​ «Справка») End Sub​

CyberForum.ru

Перенос текста в VBA

​ vbNewLine подставить в​​SuperCat​Delimeter = «, «​
​ ; и т.д.)​ символы из текста,​ каретки. Обычно для​

​ теперь для обозначения​​Урок подготовлен для Вас​ увеличивается для каждого​
​ поиска ячейки, содержащей​: Да, помогло. Спасибо.​ надо установить значение​

​ i = aws.Cells(Rows.Count,​​ xlWhole) If x​ правильно вычисляет но​
​ее неудобно читать​Казанский​
​ макрос. то эти​: If Cells(r, b.Column).Value​» нету?​

​ ‘если диапазоны проверки​​ включая переносы строк:​

​ этого используют пробел,​​ разрыва строки используют​

planetaexcel.ru

​ командой сайта office-guru.ru​

Понравилась статья? Поделить с друзьями:
  • Перенос формул в excel на другую строку
  • Перенос формул в excel в другую ячейку
  • Перенос формул excel с одной книги в другую
  • Перенос формата pdf в word
  • Перенос формат word в pdf