Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Макрос разбивающий/разграничивающий две суммы в одной ячейки - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Макрос разбивающий/разграничивающий две суммы в одной ячейки (Макросы/Sub)
Макрос разбивающий/разграничивающий две суммы в одной ячейки
Yar4i Дата: Пятница, 13.01.2017, 11:53 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 137
Репутация: 1 ±
Замечаний: 0% ±

Excel 2010
Добрый день дамы и господа :D
Сегодня с утра столкнулся с новым представлением информации. Только вчера обсуждали зло от объединённых ячеек, как оп... и я встретил новое зло "объединённые числа" в одной ячейке.
Я примерно знаю как раскидать по новым ячейкам, но вдруг есть более простой способ.
Суть:
В одной ячейке E27 находятся два числа 10 и 2, которые разделены чертой таким образом, что 10 представлено, как числитель, а 2 - знаменатель.
В соседней ячейке F27 такая же история: 3-числитель, 4-знаменатель. (хотя числитель и знаменатель - это не верно - ибо черта не дробная, а используется простое подчеркивание)
Нужно рассчитать разность =10-2-3 в ячейке K27.
У меня в запасах есть похожий код на разделитель текста внутри ячейки, но там делителем является "*", а здесь же пробелы: "
" - такие вот с переносом на другую строку/подстроку.
Да и разброс идёт на чётко указанные ячейки, здесь
[vba]
Код
With Sheets("3")
st = Split(.[K27].Value, "   ")
.[M27] = Trim$(st(0))
.[N27] = Trim$(st(1))
[/vba] , но беда в том что ячеек больше и они не всегда E27, F27 и K27
Я пытался вытащить объединенные цифры по отдельности в соседние ячейки M27, N27, O27 и потом применить формулу разности, но не знаю как для каждого последующего, неизвестно каким столбцом заканчивающее произвести расчет.
Надеюсь не путано.
Тема очень похоже на эту
К сообщению приложен файл: 2222.xlsx (59.7 Kb)


Сообщение отредактировал Yar4i - Пятница, 13.01.2017, 12:17
 
Ответить
СообщениеДобрый день дамы и господа :D
Сегодня с утра столкнулся с новым представлением информации. Только вчера обсуждали зло от объединённых ячеек, как оп... и я встретил новое зло "объединённые числа" в одной ячейке.
Я примерно знаю как раскидать по новым ячейкам, но вдруг есть более простой способ.
Суть:
В одной ячейке E27 находятся два числа 10 и 2, которые разделены чертой таким образом, что 10 представлено, как числитель, а 2 - знаменатель.
В соседней ячейке F27 такая же история: 3-числитель, 4-знаменатель. (хотя числитель и знаменатель - это не верно - ибо черта не дробная, а используется простое подчеркивание)
Нужно рассчитать разность =10-2-3 в ячейке K27.
У меня в запасах есть похожий код на разделитель текста внутри ячейки, но там делителем является "*", а здесь же пробелы: "
" - такие вот с переносом на другую строку/подстроку.
Да и разброс идёт на чётко указанные ячейки, здесь
[vba]
Код
With Sheets("3")
st = Split(.[K27].Value, "   ")
.[M27] = Trim$(st(0))
.[N27] = Trim$(st(1))
[/vba] , но беда в том что ячеек больше и они не всегда E27, F27 и K27
Я пытался вытащить объединенные цифры по отдельности в соседние ячейки M27, N27, O27 и потом применить формулу разности, но не знаю как для каждого последующего, неизвестно каким столбцом заканчивающее произвести расчет.
Надеюсь не путано.
Тема очень похоже на эту

Автор - Yar4i
Дата добавления - 13.01.2017 в 11:53
bmv98rus Дата: Пятница, 13.01.2017, 13:08 | Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4107
Репутация: 768 ±
Замечаний: 0% ±

Excel 2013/2016
Yar4i,
А просто на листе если
Код
=VALUE(TRIM(LEFT(E27;FIND(CHAR(10);E27)-1)))-VALUE(TRIM(MID(E27;FIND(CHAR(10);E27)+1;256)))-VALUE(TRIM(LEFT(F27;FIND(CHAR(10);F27)-1)))
если там не текст то можно предварительно проверить


Замечательный Временно просто медведь , процентов на 20.

Сообщение отредактировал bmv98rus - Пятница, 13.01.2017, 13:10
 
Ответить
СообщениеYar4i,
А просто на листе если
Код
=VALUE(TRIM(LEFT(E27;FIND(CHAR(10);E27)-1)))-VALUE(TRIM(MID(E27;FIND(CHAR(10);E27)+1;256)))-VALUE(TRIM(LEFT(F27;FIND(CHAR(10);F27)-1)))
если там не текст то можно предварительно проверить

Автор - bmv98rus
Дата добавления - 13.01.2017 в 13:08
sboy Дата: Пятница, 13.01.2017, 13:12 | Сообщение № 3
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2566
Репутация: 724 ±
Замечаний: 0% ±

Excel 2010
Добрый день.
У меня подлинней вариант получился(((
Код
=--(ЛЕВСИМВ(СЖПРОБЕЛЫ(ПОДСТАВИТЬ(E27;СИМВОЛ(10);""));НАЙТИ(" ";СЖПРОБЕЛЫ(ПОДСТАВИТЬ(E27;СИМВОЛ(10);"")))-1))-(--ПРАВСИМВ(СЖПРОБЕЛЫ(ПОДСТАВИТЬ(E27;СИМВОЛ(10);""));ДЛСТР(СЖПРОБЕЛЫ(ПОДСТАВИТЬ(E27;СИМВОЛ(10);"")))-НАЙТИ(" ";СЖПРОБЕЛЫ(ПОДСТАВИТЬ(E27;СИМВОЛ(10);"")))))-(--(ЛЕВСИМВ(СЖПРОБЕЛЫ(ПОДСТАВИТЬ(F27;СИМВОЛ(10);""));НАЙТИ(" ";СЖПРОБЕЛЫ(ПОДСТАВИТЬ(F27;СИМВОЛ(10);"")))-1)))

[p.s.] и не правильный


Яндекс: 410016850021169

Сообщение отредактировал sboy - Пятница, 13.01.2017, 13:20
 
Ответить
СообщениеДобрый день.
У меня подлинней вариант получился(((
Код
=--(ЛЕВСИМВ(СЖПРОБЕЛЫ(ПОДСТАВИТЬ(E27;СИМВОЛ(10);""));НАЙТИ(" ";СЖПРОБЕЛЫ(ПОДСТАВИТЬ(E27;СИМВОЛ(10);"")))-1))-(--ПРАВСИМВ(СЖПРОБЕЛЫ(ПОДСТАВИТЬ(E27;СИМВОЛ(10);""));ДЛСТР(СЖПРОБЕЛЫ(ПОДСТАВИТЬ(E27;СИМВОЛ(10);"")))-НАЙТИ(" ";СЖПРОБЕЛЫ(ПОДСТАВИТЬ(E27;СИМВОЛ(10);"")))))-(--(ЛЕВСИМВ(СЖПРОБЕЛЫ(ПОДСТАВИТЬ(F27;СИМВОЛ(10);""));НАЙТИ(" ";СЖПРОБЕЛЫ(ПОДСТАВИТЬ(F27;СИМВОЛ(10);"")))-1)))

[p.s.] и не правильный

Автор - sboy
Дата добавления - 13.01.2017 в 13:12
Wasilich Дата: Пятница, 13.01.2017, 13:33 | Сообщение № 4
Группа: Друзья
Ранг: Старожил
Сообщений: 1232
Репутация: 326 ±
Замечаний: 0% ±

2003
Ну или макросом побаловаться. Выделив две ячейки (с условием что они соседние).
[vba]
Код
Sub www()
  st = Selection.Row
  kl = Selection.Column
  C = Trim(Cells(st, kl))
  If C = "" Then Exit Sub
  x = Mid(C, 1, InStr(C, " ") - 1)
  y = Mid(C, InStrRev(C, " ") + 1, Len(C))
  C = Trim(Cells(st, kl + 1))
  z = Mid(C, 1, InStr(C, " ") - 1)
  s = x - y - z
  MsgBox s
End Sub
[/vba]
Это, как информация для размышления.
К сообщению приложен файл: Yar4i2.xls (59.0 Kb)
 
Ответить
СообщениеНу или макросом побаловаться. Выделив две ячейки (с условием что они соседние).
[vba]
Код
Sub www()
  st = Selection.Row
  kl = Selection.Column
  C = Trim(Cells(st, kl))
  If C = "" Then Exit Sub
  x = Mid(C, 1, InStr(C, " ") - 1)
  y = Mid(C, InStrRev(C, " ") + 1, Len(C))
  C = Trim(Cells(st, kl + 1))
  z = Mid(C, 1, InStr(C, " ") - 1)
  s = x - y - z
  MsgBox s
End Sub
[/vba]
Это, как информация для размышления.

Автор - Wasilich
Дата добавления - 13.01.2017 в 13:33
Yar4i Дата: Пятница, 13.01.2017, 14:02 | Сообщение № 5
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 137
Репутация: 1 ±
Замечаний: 0% ±

Excel 2010
просто

Спасибо. Формула классная. Вставлю её. (пока не колупал её, но она работает) :D
Поколупал её, она не срабатывает если E27 или F27 не содержит двухэтажные данные.

с условием

Спасибо. Сообщение о 5 получил. Разделять пробелом - понял


Сообщение отредактировал Yar4i - Пятница, 13.01.2017, 14:21
 
Ответить
Сообщение
просто

Спасибо. Формула классная. Вставлю её. (пока не колупал её, но она работает) :D
Поколупал её, она не срабатывает если E27 или F27 не содержит двухэтажные данные.

с условием

Спасибо. Сообщение о 5 получил. Разделять пробелом - понял

Автор - Yar4i
Дата добавления - 13.01.2017 в 14:02
bmv98rus Дата: Пятница, 13.01.2017, 14:35 | Сообщение № 6
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4107
Репутация: 768 ±
Замечаний: 0% ±

Excel 2013/2016
Yar4i,

я и писал - если там не текст то можно предварительно проверить. А не текст - значит там число и его не надо обрабатывать? а прото взять. добавить условие элементарно, вопрос только в том что при этом это будет всегда значение "над чертой"?
Код
=IF(ISNUMBER(E27);E27;VALUE(TRIM(LEFT(E27;FIND(CHAR(10);E27)-1)))-VALUE(TRIM(MID(E27;FIND(CHAR(10);E27)+1;256))))-IF(ISNUMBER(F27);F27;VALUE(TRIM(LEFT(F27;FIND(CHAR(10);F27)-1))))


Замечательный Временно просто медведь , процентов на 20.

Сообщение отредактировал bmv98rus - Пятница, 13.01.2017, 14:39
 
Ответить
СообщениеYar4i,

я и писал - если там не текст то можно предварительно проверить. А не текст - значит там число и его не надо обрабатывать? а прото взять. добавить условие элементарно, вопрос только в том что при этом это будет всегда значение "над чертой"?
Код
=IF(ISNUMBER(E27);E27;VALUE(TRIM(LEFT(E27;FIND(CHAR(10);E27)-1)))-VALUE(TRIM(MID(E27;FIND(CHAR(10);E27)+1;256))))-IF(ISNUMBER(F27);F27;VALUE(TRIM(LEFT(F27;FIND(CHAR(10);F27)-1))))

Автор - bmv98rus
Дата добавления - 13.01.2017 в 14:35
Yar4i Дата: Пятница, 13.01.2017, 16:48 | Сообщение № 7
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 137
Репутация: 1 ±
Замечаний: 0% ±

Excel 2010
И макрос тоже упирается в пустые ячейки
 
Ответить
СообщениеИ макрос тоже упирается в пустые ячейки

Автор - Yar4i
Дата добавления - 13.01.2017 в 16:48
Wasilich Дата: Пятница, 13.01.2017, 16:59 | Сообщение № 8
Группа: Друзья
Ранг: Старожил
Сообщений: 1232
Репутация: 326 ±
Замечаний: 0% ±

2003
макрос тоже упирается в пустые ячейки
В примере, среди выделенных, нет пустых. Кроме того, я написал:
Это, как информация для размышления.
Вот и поразмышляйте. Сделайте проверку на пустые. Потому как, я до завтра уже не буду.


Сообщение отредактировал Wasilich - Пятница, 13.01.2017, 17:06
 
Ответить
Сообщение
макрос тоже упирается в пустые ячейки
В примере, среди выделенных, нет пустых. Кроме того, я написал:
Это, как информация для размышления.
Вот и поразмышляйте. Сделайте проверку на пустые. Потому как, я до завтра уже не буду.

Автор - Wasilich
Дата добавления - 13.01.2017 в 16:59
Pelena Дата: Пятница, 13.01.2017, 17:30 | Сообщение № 9
Группа: Админы
Ранг: Местный житель
Сообщений: 19182
Репутация: 4420 ±
Замечаний: ±

Excel 365 & Mac Excel
Ещё вариант формулой
Код
=СУММПРОИЗВ(ЕСЛИОШИБКА(ПСТР(ПОДСТАВИТЬ(СЖПРОБЕЛЫ(E27)&СИМВОЛ(10);СИМВОЛ(10);ПОВТОР(" ";99));{1;99};99)*{1;-1};0))-ЕСЛИОШИБКА(ЛЕВСИМВ(F27&СИМВОЛ(10);ПОИСК(СИМВОЛ(10);F27)-1);0)
К сообщению приложен файл: 0978907.xlsx (69.4 Kb)


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеЕщё вариант формулой
Код
=СУММПРОИЗВ(ЕСЛИОШИБКА(ПСТР(ПОДСТАВИТЬ(СЖПРОБЕЛЫ(E27)&СИМВОЛ(10);СИМВОЛ(10);ПОВТОР(" ";99));{1;99};99)*{1;-1};0))-ЕСЛИОШИБКА(ЛЕВСИМВ(F27&СИМВОЛ(10);ПОИСК(СИМВОЛ(10);F27)-1);0)

Автор - Pelena
Дата добавления - 13.01.2017 в 17:30
Yar4i Дата: Понедельник, 16.01.2017, 11:13 | Сообщение № 10
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 137
Репутация: 1 ±
Замечаний: 0% ±

Excel 2010
Ещё

Спасибо большое . Очень очень огромное.

В предыдущей формуле не учитываются минусовые значения.
Тут
Код
=ЕСЛИ(ЕЧИСЛО(E27);E27;ЗНАЧЕН(СЖПРОБЕЛЫ(ЛЕВСИМВ(E27;НАЙТИ(СИМВОЛ(10);E27)-1)))-ЗНАЧЕН(СЖПРОБЕЛЫ(ПСТР(E27;НАЙТИ(СИМВОЛ(10);E27)+1;256))))-ЕСЛИ(ЕЧИСЛО(F27);F27;ЗНАЧЕН(СЖПРОБЕЛЫ(ЛЕВСИМВ(F27;НАЙТИ(СИМВОЛ(10);F27)-1))))
 
Ответить
Сообщение
Ещё

Спасибо большое . Очень очень огромное.

В предыдущей формуле не учитываются минусовые значения.
Тут
Код
=ЕСЛИ(ЕЧИСЛО(E27);E27;ЗНАЧЕН(СЖПРОБЕЛЫ(ЛЕВСИМВ(E27;НАЙТИ(СИМВОЛ(10);E27)-1)))-ЗНАЧЕН(СЖПРОБЕЛЫ(ПСТР(E27;НАЙТИ(СИМВОЛ(10);E27)+1;256))))-ЕСЛИ(ЕЧИСЛО(F27);F27;ЗНАЧЕН(СЖПРОБЕЛЫ(ЛЕВСИМВ(F27;НАЙТИ(СИМВОЛ(10);F27)-1))))

Автор - Yar4i
Дата добавления - 16.01.2017 в 11:13
_Boroda_ Дата: Понедельник, 16.01.2017, 12:24 | Сообщение № 11
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Еще вариант, похожий на Ленин и считающий в случае недробного числа в столбце F
Код
=СУММПРОИЗВ(ЕСЛИОШИБКА(ПСТР(ПОДСТАВИТЬ(E27&СИМВОЛ(10)&0;СИМВОЛ(10);ПОВТОР(" ";99));{1;99};99)*{1;-1};))+ЕСЛИОШИБКА(-ЛЕВБ(F27;ПОИСК(СИМВОЛ(10);F27&СИМВОЛ(10))-1);)

И вариант формулой массива (вводится одновременным нажатием Контрл Шифт Ентер)
Код
=СУММ(ЕСЛИОШИБКА(ПСТР(ПОДСТАВИТЬ(E27:F27&СИМВОЛ(10)&0;СИМВОЛ(10);ПОВТОР(" ";99));{1;1:99;99};99)*{1;-1:-1;0};))
К сообщению приложен файл: 2222_1.xlsx (87.4 Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеЕще вариант, похожий на Ленин и считающий в случае недробного числа в столбце F
Код
=СУММПРОИЗВ(ЕСЛИОШИБКА(ПСТР(ПОДСТАВИТЬ(E27&СИМВОЛ(10)&0;СИМВОЛ(10);ПОВТОР(" ";99));{1;99};99)*{1;-1};))+ЕСЛИОШИБКА(-ЛЕВБ(F27;ПОИСК(СИМВОЛ(10);F27&СИМВОЛ(10))-1);)

И вариант формулой массива (вводится одновременным нажатием Контрл Шифт Ентер)
Код
=СУММ(ЕСЛИОШИБКА(ПСТР(ПОДСТАВИТЬ(E27:F27&СИМВОЛ(10)&0;СИМВОЛ(10);ПОВТОР(" ";99));{1;1:99;99};99)*{1;-1:-1;0};))

Автор - _Boroda_
Дата добавления - 16.01.2017 в 12:24
Yar4i Дата: Понедельник, 16.01.2017, 13:36 | Сообщение № 12
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 137
Репутация: 1 ±
Замечаний: 0% ±

Excel 2010
в случае недробного

Спасибо работает и с не дробью и с минусом.
Так я и не понял как вы дробные в не дробные превращаете, но это великолепно.
Какая-то сметная программа выдает такие ячейки и... вотъ hands
Всем добра


Сообщение отредактировал Yar4i - Понедельник, 16.01.2017, 13:37
 
Ответить
Сообщение
в случае недробного

Спасибо работает и с не дробью и с минусом.
Так я и не понял как вы дробные в не дробные превращаете, но это великолепно.
Какая-то сметная программа выдает такие ячейки и... вотъ hands
Всем добра

Автор - Yar4i
Дата добавления - 16.01.2017 в 13:36
Yar4i Дата: Понедельник, 23.01.2017, 11:35 | Сообщение № 13
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 137
Репутация: 1 ±
Замечаний: 0% ±

Excel 2010
Еще вариант

Доброе утро.
Думал с формулой разберусь и смогу сам:
N=Jверх/F
O=Jниз/F
К сообщению приложен файл: 8187887.xlsx (9.1 Kb)


Сообщение отредактировал Yar4i - Понедельник, 23.01.2017, 11:37
 
Ответить
Сообщение
Еще вариант

Доброе утро.
Думал с формулой разберусь и смогу сам:
N=Jверх/F
O=Jниз/F

Автор - Yar4i
Дата добавления - 23.01.2017 в 11:35
_Boroda_ Дата: Понедельник, 23.01.2017, 11:45 | Сообщение № 14
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Так?
Код
=ЛЕВБ(J1;ПОИСК(СИМВОЛ(10);J1)-1)/F1

Код
=ПСТР(J1;ПОИСК(СИМВОЛ(10);J1)+1;9)/F1

Если сейчас окажется, что "А у меня могут быть и не двойные", то буду ругаться.

И вовнутрь ЕСЛИОШИБКА все это заверните
Код
=ЕСЛИОШИБКА(ЛЕВБ(J1;ПОИСК(СИМВОЛ(10);J1)-1)/F1;"")
К сообщению приложен файл: 8187887_1.xlsx (9.2 Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеТак?
Код
=ЛЕВБ(J1;ПОИСК(СИМВОЛ(10);J1)-1)/F1

Код
=ПСТР(J1;ПОИСК(СИМВОЛ(10);J1)+1;9)/F1

Если сейчас окажется, что "А у меня могут быть и не двойные", то буду ругаться.

И вовнутрь ЕСЛИОШИБКА все это заверните
Код
=ЕСЛИОШИБКА(ЛЕВБ(J1;ПОИСК(СИМВОЛ(10);J1)-1)/F1;"")

Автор - _Boroda_
Дата добавления - 23.01.2017 в 11:45
Yar4i Дата: Понедельник, 23.01.2017, 11:54 | Сообщение № 15
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 137
Репутация: 1 ±
Замечаний: 0% ±

Excel 2010
не двойные

нет нет только ноль (пустая ячейка)
Спасибо.
Ааааааааа это классно!!!
Работает.

Надеюсь кому-нибудь пригодится в КС-2 форме с 8 графами (восьмиграфке) представить информацию о стоимости материальных ресурсов из расценок с работами, и при этом имея смету с 10-ти графами в неудобном двуэтажном виде, заключающем в одну ячейку несколько числовых значений (ПЗ и оплаты труда основных рабочих, Эксплуатации машин и в т.ч. оплаты труда, Трудозатр. осн. рабочих и Трудозатр. машинистов уже умноженные на весь сметный объём)
[vba]
Код
Sub КС2_8_10двухэтажные()       
        'выделить предварительно массив!
        'переименовать предварительно лист со сметой в "0" !      
        'Отключение обновления экрана для ускорения работы макроса
Application.ScreenUpdating = False
Selection.SpecialCells(xlCellTypeVisible).Select
Selection.Copy
Sheets.Add(Before:=Sheets(1)).Name = "ГрандСмета"    'Пелена
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
        'красота в третьем и четвертом столбце
Columns("C:D").Select
Selection.ColumnWidth = 40
Cells.Select
Selection.RowHeight = 40
Application.CutCopyMode = False
With Selection
.HorizontalAlignment = xlGeneral
.VerticalAlignment = xlBottom
.WrapText = True
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
With Selection
.HorizontalAlignment = xlGeneral
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
With Selection
.HorizontalAlignment = xlGeneral
.VerticalAlignment = xlBottom
.WrapText = True
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
With Selection
.HorizontalAlignment = xlGeneral
.VerticalAlignment = xlCenter
.WrapText = True
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.WrapText = True
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
'            'удалить пустые строки Wasilich
PS = Range("B" & Rows.Count).End(xlUp).Row
For i = PS To 1 Step -1
If Cells(i, 2) = "" Or Mid(Cells(i, 2), 1, 1) = "." Or Mid(Cells(i, 2), 1, 1) = Chr(133) Then
Rows(i).Delete
End If
Next
            'для всех D     формула tt  МВТ,  Manyasha
For Each cell In Range("d1:d" & Cells(Rows.Count, "d").End(xlUp).Row)
cell.Value = tt(cell.Value) 'вызов UDF от МВТ
Next cell
            'переименовать, ибо отрывается буква от последующего слова
Range("D1:D777").Replace "ГЭСН а", "ГЭСН", xlPart
Range("D1:D777").Replace "ГЭСН б", "ГЭСН", xlPart
Range("D1:D777").Replace "ГЭСН в", "ГЭСН", xlPart
Range("D1:D777").Replace "ГЭСН г", "ГЭСН", xlPart
Range("D1:D777").Replace "ГЭСН д", "ГЭСН", xlPart
Range("D1:D777").Replace "ГЭСН е", "ГЭСН", xlPart
Range("D1:D777").Replace "ГЭСН ж", "ГЭСН", xlPart
Range("D1:D777").Replace "ГЭСН з", "ГЭСН", xlPart
Range("D1:D777").Replace "ГЭСН и", "ГЭСН", xlPart
Range("D1:D777").Replace "ГЭСНм и", "ГЭСНм", xlPart  'проверь
Range("D1:D777").Replace "ГЭСН к", "ГЭСН", xlPart
Range("D1:D777").Replace "ГЭСН л", "ГЭСН", xlPart
Range("D1:D777").Replace "ГЭСН н", "ГЭСН", xlPart
Range("D1:D777").Replace "ГЭСН о", "ГЭСН", xlPart
Range("D1:D777").Replace "ГЭСН п", "ГЭСН", xlPart   'проверь
Range("D1:D777").Replace "ГЭСН с", "ГЭСН", xlPart
Range("D1:D777").Replace "ГЭСН т", "ГЭСН", xlPart
Range("D1:D777").Replace "ГЭСН у", "ГЭСН", xlPart
Range("D1:D777").Replace "ГЭСН ф", "ГЭСН", xlPart
Range("D1:D777").Replace "ГЭСН х", "ГЭСН", xlPart
Range("D1:D777").Replace "ГЭСН ц", "ГЭСН", xlPart
Range("D1:D777").Replace "ГЭСН ч", "ГЭСН", xlPart
Range("D1:D777").Replace "ГЭСН ш", "ГЭСН", xlPart
Range("D1:D777").Replace "ГЭСН щ", "ГЭСН", xlPart
Range("D1:D777").Replace "ГЭСН ю", "ГЭСН", xlPart
Range("D1:D777").Replace "ГЭСН я", "ГЭСН", xlPart
Range("D1:D777").Replace "ФССЦ", "_______________", xlPart
Range("D1:D777").Replace "СЦМ", "_______________", xlPart
Range("D1:D777").Replace "ФСЦМ", "_______________", xlPart
Range("D1:D777").Replace "С1", "_______________С1", xlPart
Range("D1:D777").Replace "Т 1 - 1", "_______________", xlPart
Range("D1:D777").Replace "Т 1-1", "_______________", xlPart
Range("D1:D777").Replace "Е1303-4-17 К=2", "г13-03-04-17", xlPart
Range("D1:D777").Replace "Е0905-2-1 изм.вып.1", "г09-05-002-1", xlPart
Range("D1:D777").Replace "Е1303-4-5 К=2", "г13-03-4-5", xlPart
Range("D1:D777").Replace "Е0501-117-1", "г05-01-117-1", xlPart
Range("D1:D777").Replace "Е0906-24", "г09-06-24", xlPart
Range("D1:D777").Replace "Е0501-63", "г05-01-63", xlPart
Range("D1:D777").Replace "Е906-24", "г9-06-24", xlPart
Range("D1:D777").Replace "Е0501-95", "Г05-01-95", xlPart
Range("D1:D777").Replace "Е102-61", "Г1-02-61", xlPart
Range("D1:D777").Replace "Е2601-", "г26-01-", xlPart
Range("D1:D777").Replace "Е0102-61-", "г01-02-61-", xlPart
Range("D1:D777").Replace "Е0801-", "г08-01-", xlPart
Range("D1:D777").Replace "Е501-", "г05-01-", xlPart
Range("D1:D777").Replace "Е402-", "г4-02-", xlPart
Range("D1:D777").Replace "Е1303-", "г13-03-", xlPart
Range("D1:D777").Replace "Е0903-", "г09-03-", xlPart
Range("D1:D777").Replace "Е0701-", "г07-01-", xlPart
Range("D1:D777").Replace "Е0601-", "г06-01-", xlPart
Range("D1:D777").Replace "Е0904-", "г09-04-", xlPart
Range("D1:D777").Replace "Е2707-", "г27-07-", xlPart
Range("D1:D777").Replace "Е2709-", "г27-09-", xlPart
Range("D1:D777").Replace "Е2701-", "г27-01-", xlPart
Range("D1:D777").Replace "Е2702-", "г27-02-", xlPart
Range("D1:D777").Replace "Е2703-", "г27-03-", xlPart
Range("D1:D777").Replace "Е2704-", "г27-04-", xlPart
Range("D1:D777").Replace "Е2705-", "г27-05-", xlPart
Range("D1:D777").Replace "Е2706-", "г27-06-", xlPart
Range("D1:D777").Replace "Е1306-", "г13-06-", xlPart
Range("D1:D777").Replace "Е1305-", "г13-05-", xlPart
Range("D1:D777").Replace "Е1304-", "г13-04-", xlPart
Range("C1:C777").Replace "еноплекс", "еноплэкс", xlPart
Range("C1:C777").Replace " .   (", ".(", xlPart
Range("C1:C777").Replace "  (", "(", xlPart
            'Минуса убрать с цены  (минус из 7-ого столбца в 6-ой) _Boroda_
For i = 1 To Range("F" & Rows.Count).End(xlUp).Row
If Cells(i, 7) < 0 Then
Cells(i, 7) = -Cells(i, 7)
Cells(i, 6) = -Abs(Cells(i, 6))
End If
Next
                 'стоимость т/з и материалов из сметы 3 в ГрандСмета
Range("H1").Select
ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-6]&"""",'0'!R22C1:R3000C13,5,0)"  'nilem
Range("H1:H" & Range("B" & Rows.Count).End(xlUp).Row).FormulaR1C1 = "=VLOOKUP(RC[-6]&"""",'0'!R22C1:R3000C13,5,0)" 'стоимость ПЗ в H
Range("I1").Select
ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-7]&"""",'0'!R22C1:R3000C13,6,0)"  'nilem
Range("I1:I" & Range("B" & Rows.Count).End(xlUp).Row).FormulaR1C1 = "=VLOOKUP(RC[-7]&"""",'0'!R22C1:R3000C13,6,0)" 'стоимость ПЗ в I
Range("J1").Select
ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-8]&"""",'0'!R22C1:R3000C13,10,0)"  'nilem
Range("J1:J" & Range("B" & Rows.Count).End(xlUp).Row).FormulaR1C1 = "=VLOOKUP(RC[-8]&"""",'0'!R22C1:R3000C13,10,0)" ' т/з в J
'стоимость материалов по формуле от bmv98rus
Range("K1").Select
ActiveCell.FormulaR1C1 = "=SUMPRODUCT(IFERROR(MID(SUBSTITUTE(RC[-3]&CHAR(10)&0,CHAR(10),REPT("" "",99)),{1,99},99)*{1,-1},))+IFERROR(-LEFTB(RC[-2],SEARCH(CHAR(10),RC[-3]&CHAR(10))-1),)" '_Boroda_
Range("K1:K" & Range("B" & Rows.Count).End(xlUp).Row).FormulaR1C1 = "=SUMPRODUCT(IFERROR(MID(SUBSTITUTE(RC[-3]&CHAR(10)&0,CHAR(10),REPT("" "",99)),{1,99},99)*{1,-1},))+IFERROR(-LEFTB(RC[-2],SEARCH(CHAR(10),RC[-3]&CHAR(10))-1),)"
'изменить ширину стоимости в куче
Columns("H:I").Select
Selection.ColumnWidth = 12
    Range("P1").Select
    ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-14]&"""",'0'!R22C1:R3000C13,4,0)"
    Range("P1:P" & Range("B" & Rows.Count).End(xlUp).Row).FormulaR1C1 = "=VLOOKUP(RC[-14]&"""",'0'!R22C1:R3000C13,4,0)" ' т/з из сметы замноженные на объём в P
    Range("O1").Select
    ActiveCell.FormulaR1C1 = "=IFERROR(MID(RC[-5],SEARCH(CHAR(10),RC[-5])+1,9)/RC[1],"""")"
    Range("O1:O" & Range("B" & Rows.Count).End(xlUp).Row).FormulaR1C1 = "=IFERROR(MID(RC[-5],SEARCH(CHAR(10),RC[-5])+1,9)/RC[1],"""")" ' т/з из сметы в O
    Range("N1").Select
    ActiveCell.FormulaR1C1 = "=IFERROR(LEFTB(RC[-4],SEARCH(CHAR(10),RC[-4])-1)/RC[2],"""")"
    Range("N1:N" & Range("B" & Rows.Count).End(xlUp).Row).FormulaR1C1 = "=IFERROR(LEFTB(RC[-4],SEARCH(CHAR(10),RC[-4])-1)/RC[2],"""")" ' т/з из сметы в N
    Columns("N:O").Select
    Selection.NumberFormat = "#,##0.00"
                'объеденим материалы и т/з в M для примечания
    Range("M1").Select
    ActiveCell.FormulaR1C1 = "=RC[1]&""                ""&RC[2]&""               ""&RC[-2]"
    Range("M1:M" & Range("B" & Rows.Count).End(xlUp).Row).FormulaR1C1 = "=RC[1]&""                ""&RC[2]&""               ""&RC[-2]"
'                поменять местами наименование и обоснование
Columns("C:C").Select
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Columns("E:E").Select
Selection.Copy
Columns("C:C").Select
ActiveSheet.Paste
Columns("E:E").Select
Application.CutCopyMode = False
Selection.Delete Shift:=xlToLeft
            'СохрБезЗапроса Апострофф
ActiveWindow.SmallScroll Down:=-100
Range("A8").Select
ActiveWindow.View = xlNormalView
ActiveWindow.Zoom = 100
Workbooks.Application.DisplayAlerts = False
Excel.ActiveWorkbook.Save
Application.Quit
'            Включение обновления экрана для ускорения работы макроса
Application.ScreenUpdating = True
End Sub
[/vba]
Предварительно:
1. выделите необходимый массив расценок(тело КС2). Только тело (столбцы с A по Н), без шапки и бороды.
2. переименовать лист со сметой в ноль "0".
К сообщению приложен файл: 8732414.xlsx (54.9 Kb)


Сообщение отредактировал Yar4i - Понедельник, 23.01.2017, 14:24
 
Ответить
Сообщение
не двойные

нет нет только ноль (пустая ячейка)
Спасибо.
Ааааааааа это классно!!!
Работает.

Надеюсь кому-нибудь пригодится в КС-2 форме с 8 графами (восьмиграфке) представить информацию о стоимости материальных ресурсов из расценок с работами, и при этом имея смету с 10-ти графами в неудобном двуэтажном виде, заключающем в одну ячейку несколько числовых значений (ПЗ и оплаты труда основных рабочих, Эксплуатации машин и в т.ч. оплаты труда, Трудозатр. осн. рабочих и Трудозатр. машинистов уже умноженные на весь сметный объём)
[vba]
Код
Sub КС2_8_10двухэтажные()       
        'выделить предварительно массив!
        'переименовать предварительно лист со сметой в "0" !      
        'Отключение обновления экрана для ускорения работы макроса
Application.ScreenUpdating = False
Selection.SpecialCells(xlCellTypeVisible).Select
Selection.Copy
Sheets.Add(Before:=Sheets(1)).Name = "ГрандСмета"    'Пелена
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
        'красота в третьем и четвертом столбце
Columns("C:D").Select
Selection.ColumnWidth = 40
Cells.Select
Selection.RowHeight = 40
Application.CutCopyMode = False
With Selection
.HorizontalAlignment = xlGeneral
.VerticalAlignment = xlBottom
.WrapText = True
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
With Selection
.HorizontalAlignment = xlGeneral
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
With Selection
.HorizontalAlignment = xlGeneral
.VerticalAlignment = xlBottom
.WrapText = True
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
With Selection
.HorizontalAlignment = xlGeneral
.VerticalAlignment = xlCenter
.WrapText = True
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.WrapText = True
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
'            'удалить пустые строки Wasilich
PS = Range("B" & Rows.Count).End(xlUp).Row
For i = PS To 1 Step -1
If Cells(i, 2) = "" Or Mid(Cells(i, 2), 1, 1) = "." Or Mid(Cells(i, 2), 1, 1) = Chr(133) Then
Rows(i).Delete
End If
Next
            'для всех D     формула tt  МВТ,  Manyasha
For Each cell In Range("d1:d" & Cells(Rows.Count, "d").End(xlUp).Row)
cell.Value = tt(cell.Value) 'вызов UDF от МВТ
Next cell
            'переименовать, ибо отрывается буква от последующего слова
Range("D1:D777").Replace "ГЭСН а", "ГЭСН", xlPart
Range("D1:D777").Replace "ГЭСН б", "ГЭСН", xlPart
Range("D1:D777").Replace "ГЭСН в", "ГЭСН", xlPart
Range("D1:D777").Replace "ГЭСН г", "ГЭСН", xlPart
Range("D1:D777").Replace "ГЭСН д", "ГЭСН", xlPart
Range("D1:D777").Replace "ГЭСН е", "ГЭСН", xlPart
Range("D1:D777").Replace "ГЭСН ж", "ГЭСН", xlPart
Range("D1:D777").Replace "ГЭСН з", "ГЭСН", xlPart
Range("D1:D777").Replace "ГЭСН и", "ГЭСН", xlPart
Range("D1:D777").Replace "ГЭСНм и", "ГЭСНм", xlPart  'проверь
Range("D1:D777").Replace "ГЭСН к", "ГЭСН", xlPart
Range("D1:D777").Replace "ГЭСН л", "ГЭСН", xlPart
Range("D1:D777").Replace "ГЭСН н", "ГЭСН", xlPart
Range("D1:D777").Replace "ГЭСН о", "ГЭСН", xlPart
Range("D1:D777").Replace "ГЭСН п", "ГЭСН", xlPart   'проверь
Range("D1:D777").Replace "ГЭСН с", "ГЭСН", xlPart
Range("D1:D777").Replace "ГЭСН т", "ГЭСН", xlPart
Range("D1:D777").Replace "ГЭСН у", "ГЭСН", xlPart
Range("D1:D777").Replace "ГЭСН ф", "ГЭСН", xlPart
Range("D1:D777").Replace "ГЭСН х", "ГЭСН", xlPart
Range("D1:D777").Replace "ГЭСН ц", "ГЭСН", xlPart
Range("D1:D777").Replace "ГЭСН ч", "ГЭСН", xlPart
Range("D1:D777").Replace "ГЭСН ш", "ГЭСН", xlPart
Range("D1:D777").Replace "ГЭСН щ", "ГЭСН", xlPart
Range("D1:D777").Replace "ГЭСН ю", "ГЭСН", xlPart
Range("D1:D777").Replace "ГЭСН я", "ГЭСН", xlPart
Range("D1:D777").Replace "ФССЦ", "_______________", xlPart
Range("D1:D777").Replace "СЦМ", "_______________", xlPart
Range("D1:D777").Replace "ФСЦМ", "_______________", xlPart
Range("D1:D777").Replace "С1", "_______________С1", xlPart
Range("D1:D777").Replace "Т 1 - 1", "_______________", xlPart
Range("D1:D777").Replace "Т 1-1", "_______________", xlPart
Range("D1:D777").Replace "Е1303-4-17 К=2", "г13-03-04-17", xlPart
Range("D1:D777").Replace "Е0905-2-1 изм.вып.1", "г09-05-002-1", xlPart
Range("D1:D777").Replace "Е1303-4-5 К=2", "г13-03-4-5", xlPart
Range("D1:D777").Replace "Е0501-117-1", "г05-01-117-1", xlPart
Range("D1:D777").Replace "Е0906-24", "г09-06-24", xlPart
Range("D1:D777").Replace "Е0501-63", "г05-01-63", xlPart
Range("D1:D777").Replace "Е906-24", "г9-06-24", xlPart
Range("D1:D777").Replace "Е0501-95", "Г05-01-95", xlPart
Range("D1:D777").Replace "Е102-61", "Г1-02-61", xlPart
Range("D1:D777").Replace "Е2601-", "г26-01-", xlPart
Range("D1:D777").Replace "Е0102-61-", "г01-02-61-", xlPart
Range("D1:D777").Replace "Е0801-", "г08-01-", xlPart
Range("D1:D777").Replace "Е501-", "г05-01-", xlPart
Range("D1:D777").Replace "Е402-", "г4-02-", xlPart
Range("D1:D777").Replace "Е1303-", "г13-03-", xlPart
Range("D1:D777").Replace "Е0903-", "г09-03-", xlPart
Range("D1:D777").Replace "Е0701-", "г07-01-", xlPart
Range("D1:D777").Replace "Е0601-", "г06-01-", xlPart
Range("D1:D777").Replace "Е0904-", "г09-04-", xlPart
Range("D1:D777").Replace "Е2707-", "г27-07-", xlPart
Range("D1:D777").Replace "Е2709-", "г27-09-", xlPart
Range("D1:D777").Replace "Е2701-", "г27-01-", xlPart
Range("D1:D777").Replace "Е2702-", "г27-02-", xlPart
Range("D1:D777").Replace "Е2703-", "г27-03-", xlPart
Range("D1:D777").Replace "Е2704-", "г27-04-", xlPart
Range("D1:D777").Replace "Е2705-", "г27-05-", xlPart
Range("D1:D777").Replace "Е2706-", "г27-06-", xlPart
Range("D1:D777").Replace "Е1306-", "г13-06-", xlPart
Range("D1:D777").Replace "Е1305-", "г13-05-", xlPart
Range("D1:D777").Replace "Е1304-", "г13-04-", xlPart
Range("C1:C777").Replace "еноплекс", "еноплэкс", xlPart
Range("C1:C777").Replace " .   (", ".(", xlPart
Range("C1:C777").Replace "  (", "(", xlPart
            'Минуса убрать с цены  (минус из 7-ого столбца в 6-ой) _Boroda_
For i = 1 To Range("F" & Rows.Count).End(xlUp).Row
If Cells(i, 7) < 0 Then
Cells(i, 7) = -Cells(i, 7)
Cells(i, 6) = -Abs(Cells(i, 6))
End If
Next
                 'стоимость т/з и материалов из сметы 3 в ГрандСмета
Range("H1").Select
ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-6]&"""",'0'!R22C1:R3000C13,5,0)"  'nilem
Range("H1:H" & Range("B" & Rows.Count).End(xlUp).Row).FormulaR1C1 = "=VLOOKUP(RC[-6]&"""",'0'!R22C1:R3000C13,5,0)" 'стоимость ПЗ в H
Range("I1").Select
ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-7]&"""",'0'!R22C1:R3000C13,6,0)"  'nilem
Range("I1:I" & Range("B" & Rows.Count).End(xlUp).Row).FormulaR1C1 = "=VLOOKUP(RC[-7]&"""",'0'!R22C1:R3000C13,6,0)" 'стоимость ПЗ в I
Range("J1").Select
ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-8]&"""",'0'!R22C1:R3000C13,10,0)"  'nilem
Range("J1:J" & Range("B" & Rows.Count).End(xlUp).Row).FormulaR1C1 = "=VLOOKUP(RC[-8]&"""",'0'!R22C1:R3000C13,10,0)" ' т/з в J
'стоимость материалов по формуле от bmv98rus
Range("K1").Select
ActiveCell.FormulaR1C1 = "=SUMPRODUCT(IFERROR(MID(SUBSTITUTE(RC[-3]&CHAR(10)&0,CHAR(10),REPT("" "",99)),{1,99},99)*{1,-1},))+IFERROR(-LEFTB(RC[-2],SEARCH(CHAR(10),RC[-3]&CHAR(10))-1),)" '_Boroda_
Range("K1:K" & Range("B" & Rows.Count).End(xlUp).Row).FormulaR1C1 = "=SUMPRODUCT(IFERROR(MID(SUBSTITUTE(RC[-3]&CHAR(10)&0,CHAR(10),REPT("" "",99)),{1,99},99)*{1,-1},))+IFERROR(-LEFTB(RC[-2],SEARCH(CHAR(10),RC[-3]&CHAR(10))-1),)"
'изменить ширину стоимости в куче
Columns("H:I").Select
Selection.ColumnWidth = 12
    Range("P1").Select
    ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-14]&"""",'0'!R22C1:R3000C13,4,0)"
    Range("P1:P" & Range("B" & Rows.Count).End(xlUp).Row).FormulaR1C1 = "=VLOOKUP(RC[-14]&"""",'0'!R22C1:R3000C13,4,0)" ' т/з из сметы замноженные на объём в P
    Range("O1").Select
    ActiveCell.FormulaR1C1 = "=IFERROR(MID(RC[-5],SEARCH(CHAR(10),RC[-5])+1,9)/RC[1],"""")"
    Range("O1:O" & Range("B" & Rows.Count).End(xlUp).Row).FormulaR1C1 = "=IFERROR(MID(RC[-5],SEARCH(CHAR(10),RC[-5])+1,9)/RC[1],"""")" ' т/з из сметы в O
    Range("N1").Select
    ActiveCell.FormulaR1C1 = "=IFERROR(LEFTB(RC[-4],SEARCH(CHAR(10),RC[-4])-1)/RC[2],"""")"
    Range("N1:N" & Range("B" & Rows.Count).End(xlUp).Row).FormulaR1C1 = "=IFERROR(LEFTB(RC[-4],SEARCH(CHAR(10),RC[-4])-1)/RC[2],"""")" ' т/з из сметы в N
    Columns("N:O").Select
    Selection.NumberFormat = "#,##0.00"
                'объеденим материалы и т/з в M для примечания
    Range("M1").Select
    ActiveCell.FormulaR1C1 = "=RC[1]&""                ""&RC[2]&""               ""&RC[-2]"
    Range("M1:M" & Range("B" & Rows.Count).End(xlUp).Row).FormulaR1C1 = "=RC[1]&""                ""&RC[2]&""               ""&RC[-2]"
'                поменять местами наименование и обоснование
Columns("C:C").Select
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Columns("E:E").Select
Selection.Copy
Columns("C:C").Select
ActiveSheet.Paste
Columns("E:E").Select
Application.CutCopyMode = False
Selection.Delete Shift:=xlToLeft
            'СохрБезЗапроса Апострофф
ActiveWindow.SmallScroll Down:=-100
Range("A8").Select
ActiveWindow.View = xlNormalView
ActiveWindow.Zoom = 100
Workbooks.Application.DisplayAlerts = False
Excel.ActiveWorkbook.Save
Application.Quit
'            Включение обновления экрана для ускорения работы макроса
Application.ScreenUpdating = True
End Sub
[/vba]
Предварительно:
1. выделите необходимый массив расценок(тело КС2). Только тело (столбцы с A по Н), без шапки и бороды.
2. переименовать лист со сметой в ноль "0".

Автор - Yar4i
Дата добавления - 23.01.2017 в 11:54
Yar4i Дата: Понедельник, 23.01.2017, 14:23 | Сообщение № 16
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 137
Репутация: 1 ±
Замечаний: 0% ±

Excel 2010
Это для загрузки в Гранд-Смету из Excel по столбцу M идёт примечание - благодаря чему мы сможем наглядно видеть трудозатраты и стоимость материалов, не раскрывая расценки ++ в программе и не терзая лишний раз смету.
И про функцию tt забыл, что в теле кода основного.
[vba]
Код
Function tt(Text As String)
    Dim obj As Object
    Text = WorksheetFunction.Trim(Text)
    With CreateObject("VBScript.Regexp")
        .Ignorecase = False
        .MultiLine = False
        .Pattern = "(\d{1,3}-\d{1,3}-\d{1,3}- ?\d{1,3}) ([А-яЁё]+( [а-яё])?)"
        Set obj = .Execute(Text)
        If obj.Count > 0 Then Text = obj(0).submatches(1) & " " & obj(0).submatches(0)
    End With
    tt = Text
End Function
[/vba]


Сообщение отредактировал Yar4i - Понедельник, 23.01.2017, 14:28
 
Ответить
СообщениеЭто для загрузки в Гранд-Смету из Excel по столбцу M идёт примечание - благодаря чему мы сможем наглядно видеть трудозатраты и стоимость материалов, не раскрывая расценки ++ в программе и не терзая лишний раз смету.
И про функцию tt забыл, что в теле кода основного.
[vba]
Код
Function tt(Text As String)
    Dim obj As Object
    Text = WorksheetFunction.Trim(Text)
    With CreateObject("VBScript.Regexp")
        .Ignorecase = False
        .MultiLine = False
        .Pattern = "(\d{1,3}-\d{1,3}-\d{1,3}- ?\d{1,3}) ([А-яЁё]+( [а-яё])?)"
        Set obj = .Execute(Text)
        If obj.Count > 0 Then Text = obj(0).submatches(1) & " " & obj(0).submatches(0)
    End With
    tt = Text
End Function
[/vba]

Автор - Yar4i
Дата добавления - 23.01.2017 в 14:23
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Макрос разбивающий/разграничивающий две суммы в одной ячейки (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!