Справка - Поиск - Участники - Войти - Регистрация
Полная версия: Excel
Частный клуб Алекса Экслера > Софт
cloud
12 ноября 2015, 16:49
Как построить диаграмму, каждая из осей которой определяется двумя переменными?
Alex Lonewolf
12 ноября 2015, 19:31

cloud написала: Как построить диаграмму, каждая из осей которой определяется двумя переменными?

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

Делаем два столбца, в первом вычисляем X = f(a, b), во втором Y = f(c, d)
Затем по этим двум столбцам строим диаграмму типа "Точечная".
Mx
13 ноября 2015, 09:54

cloud написала:  Как построить диаграмму, каждая из осей которой определяется двумя переменными?

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

Alex Lonewolf написал: Делаем два столбца, в первом вычисляем X = f(a, b), во втором Y = f(c, d)

Я бы сказал x=f(u, v), y=g(u,v), то есть функции могут быть разными, а параметры лучше обозначить теми же буквами чтобы показать что мы будем подставлять одинаковые значения параметров в обе функции.
Для построения графика выбирается некий набор возможных значений параметров и для него вычисляются данные функции. Получаем набор пар значений, которые и наносим на график.
cloud
13 ноября 2015, 23:36
Вопрос закрыт за невозможностью (пока) решения.
AndreyG
15 июня 2016, 14:44
Есть двухмерный массив, содержащий неповторяющиеся значения.
Как найти номера (строку и столбец) ячейки, содержащей нужное значение?

Например, как определить ряд и место в самолете, где сидит Вася Пупкин?
ЧинаSки
23 июня 2016, 17:36

AndreyG написал: Например, как определить ряд и место в самолете, где сидит Вася Пупкин?

Для уникальных значений (Вася Пупкин должен быть в самолете, и он такой должен быть один):
AndreyG
23 июня 2016, 18:24
Спасибо большое! Будет время, разберусь (пока что я как-то обошел эту проблему).
Xelena
24 июня 2016, 20:19
У меня тоже вопрос про Эксель, я уже всю голову выломала frown.gif

При копировании данных из 1С (простое ctrl-c ctrl-v), отрицательные числа вставляются со скобками и Экселюшка их не понимает, как числа.

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

Захотелось автоматизировать весь этот мелкий мусор - в т.ч. в макрос вставила строку Cells.Replace What:="(", Replacement:="("

Точнее, это макрорекордером сам эксель вставил. В макросе оно не работает. Никак, явно перебирает ячейки, судя по мельтешению на экране, но в этих ячейках текст остается текстом.

На этом фантазия остановилась. Что можно сделать?
Нужна именно строчка в макрос.
Tamerlan
26 июня 2016, 14:22

Xelena написала: У меня тоже вопрос про Эксель, я уже всю голову выломала frown.gif

При копировании данных из 1С (простое ctrl-c ctrl-v), отрицательные числа вставляются со скобками и Экселюшка их не понимает, как числа.

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

Захотелось автоматизировать весь этот мелкий мусор - в т.ч. в макрос вставила строку    Cells.Replace What:="(", Replacement:="("

Точнее, это макрорекордером сам эксель вставил. В макросе оно не работает. Никак, явно перебирает ячейки, судя по мельтешению на экране, но в этих ячейках текст остается текстом.

На этом фантазия остановилась. Что можно сделать?
Нужна именно строчка в макрос.

Давай пример эксельки с сырыми данными. Попробую набросать тебе макрос.
AndreyG
8 ноября 2016, 11:20
Попробовал писать свои функции. Очень хочется, чтобы при использовании вылезали подсказки как у стандартных функций: что она делает, какие аргументы.
Это можно сделать?
alibek
8 ноября 2016, 15:15
Это можно в надстройках Excel делать (файлы с расширением xla).
Но я такое делал очень давно и уже не помню как.
AndreyG
17 февраля 2017, 15:03
Есть очень большой файл (заготовки для всевозможных инженерных расчетов). При открытии он всегда спрашивает насчет обновления данных из внешних источников.
Я искал все вхождения подстрок \, xls, xlsx и т.д., но ничего такого там нет. В чем может быть дело?
ЧинаSки
17 февраля 2017, 15:09
Если есть условное форматирование, оно может быть формулой прописано и там, бывает, внешние источники тянутся.
Alx
17 февраля 2017, 16:18

AndreyG написал: Есть очень большой файл (заготовки для всевозможных инженерных расчетов). При открытии он всегда спрашивает насчет обновления данных из внешних источников.

А файл не импортирует данные из других файлов или баз данных? В этом случае может. Причем если согласишься может и спросить пароль.
AndreyG
17 февраля 2017, 17:38

Alx написал:
А файл не импортирует данные из других файлов или баз данных? В этом случае может. Причем если согласишься может и спросить пароль.

Нет. Я и искал все ссылки на внешние файлы.
Насчет условного форматирования - это идея! Оно там есть. Пойду искать. Там многое переносилось из других файлов. Ссылки в формулах я исправлял, а условное форматирование и выбор из списков мог и упустить.
Alx
17 февраля 2017, 18:13

AndreyG написал: Нет. Я и искал все ссылки на внешние файлы.

Посмотри в меню "Данные" пункт "Подключения".
AndreyG
17 февраля 2017, 18:33

Alx написал:
Посмотри в меню "Данные" пункт "Подключения".

О! Спасибо! Получилось.
Только я так и не понял, где эта ссылка на давно убитый файл жила. Во всяком случае, там, к чему это имело какое-либо отношение, я все уже перекопал и ничего не нашел smile.gif
Alx
18 февраля 2017, 00:53

AndreyG написал: Только я так и не понял, где эта ссылка на давно убитый файл жила.

На одном из листов было вставлено подключение к внешнему файлу. На самом деле штука удобная.
cloud
19 февраля 2017, 21:36
Есть необходимость создания макроса, который бы 1) усреднял значение параметров за указанный период времени (нужен также учет периода и отбрасывание "старых" значений) 2) производил сравнения этого значения с неким референсом и выводил соответствующий результат.
Буду признательна на указание, что почитать по этому поводу. rev.gif
alibek
20 февраля 2017, 11:40
На первый взгляд макрос и не нужен, достаточно функций из категории "Статистические" (МЕДИАНА, СРЗНАЧ).
cloud
20 февраля 2017, 16:46
Данные будут пополняться, то есть расчет должен быть неоднократный.
alibek
20 февраля 2017, 17:13
Да это неважно. Динамический диапазон для функции можно задать с помощью функций СЧЁТ и СМЕЩ/ДВССЫЛК.
Если будет пример значений и отбрасываемых значений, могу нарисовать примерный вид формул.
cloud
20 февраля 2017, 23:26
Посмотрю про

СМЕЩ/ДВССЫЛК

спасибо. smile4.gif
AndreyG
27 марта 2017, 16:58
Еще вопрос: мне нужно делать экспорт многостраничной книги в pdf для нескольких заказчиков, скажем "Рога и копыта" и "Носы и хвосты".

Можно ли менять текст колонтитула на всех страницах книги? Страницы имеют разный формат, если выделить все, то поменяется не только колонтитул, но и размер, поля и т.д.
Носки Поэта
30 марта 2017, 19:35

AndreyG написал: Можно ли менять текст колонтитула на всех страницах книги?

Решил? На VBA или WSH всё решается в несколько строк кода, перебором всех листов, не трогая остальных параметров.
AndreyG
31 марта 2017, 17:19

Носки Поэта написал:
Решил?

Нет, хотелось бы избежать использования макросов.
Носки Поэта
31 марта 2017, 18:48

AndreyG написал: Нет, хотелось бы избежать использования макросов.

Внешний скрипт на VBS с использованием WSH подойдет? Никаких макросов. Могу набросать в понедельник, если не горит. Дома офис ставить не хочется.
AndreyG
3 апреля 2017, 13:16

Носки Поэта написал:
Внешний скрипт на VBS с использованием WSH подойдет? Никаких макросов. Могу набросать в понедельник, если не горит. Дома офис ставить не хочется.

Буду очень признателен. Только я в этом полный профан, никогда не сталкивался.
Правильно я понимаю, что это отдельный exe-шник, запускаемый параллельно с Excel-ем?
Носки Поэта
3 апреля 2017, 14:18

AndreyG написал: Буду очень признателен. Только я в этом полный профан, никогда не сталкивался.

Наводящие вопросы выслал в приват.
Носки Поэта
3 апреля 2017, 14:26

AndreyG написал: Правильно я понимаю, что это отдельный exe-шник, запускаемый параллельно с Excel-ем?

Нет, это внешний скрипт на Visual Basic Script, который сам откроет исходный excel-файл, внесет в него изменения и сохранит в нужном виде (можно даже сразу в PDF). Microsoft встроил в винды возможность писать всякую фигню на VBS для управления как самой виндой, так и установленными программами. И запускать эти скрипты безо всякой компиляции в exe-шник - прямо так, в виде текстового файла. Я дам инструкции по запуску вместе с текстом скрипта.
AndreyG
3 апреля 2017, 15:02

Носки Поэта написал:
Нет, это внешний скрипт на Visual Basic Script, который сам откроет исходный excel-файл, внесет в него изменения и сохранит в нужном виде (можно даже сразу в PDF). Microsoft встроил в винды возможность писать всякую фигню на VBS для управления как самой виндой, так и установленными программами. И запускать эти скрипты безо всякой компиляции в exe-шник - прямо так, в виде текстового файла. Я дам инструкции по запуску вместе с текстом скрипта.

Спасибо, достаточно только изменений в xls.
Носки Поэта
3 апреля 2017, 21:30
CODE


Option explicit
Dim Excel, xBook, FSO

 Set FSO = CreateObject("Scripting.FileSystemObject")
 Set Excel = CreateObject("Excel.Application")

'  Excel.visible = True ' для отладки лучше включить, чтобы не искать зависшие невидимые EXCEL процессы в диспетчере задач
 call mainWrk

'Собственно подпрограмма, обрабатывающая экселевский файл
Sub Wrk(xArg)
 Dim  i, res
 Set xBook = Excel.Workbooks.open(xArg)

 res = InputBox("Введите колонтитул")
' Обработать введенную информацию.
 If res = "" Then
    WScript.Echo "Вы ничего не ввели - ничего не меняем"
 Else
   for i = 1 to xBook.Sheets.Count Step 1
     xBook.sheets(i).PageSetup.CenterHeader = res
   next
   xBook.Save
 End If
 xBook.Close
 xBook = null
 WScript.Echo "Проверьте файл: "& xArg  
End Sub

' А это просто программа, которая всем руководит

sub mainWrk
 Dim oArgs, i

' Считываем аргументы переданные при запуске
' Можно запускать её как старый добрый bat-файл с параметрами,
' в которых перечислять excel-файлы
' А можно повесить на рабочий стол ярлык,
' и если бросить на этот ярлык один или несколько excel-файлов
' они все обработаются и сохранятся там же, где и были

 Set oArgs = WScript.Arguments
 If oArgs.Count > 0 Then
   For i = 0 to oArgs.Count - 1
     call wrk(FSO.GetAbsolutePathName(oArgs(i)))
   Next
 end If
end sub



Пояснения:
1. Код выделить и сохраниять в файл с расширением .vbs
2. Запускать либо из командной строки, указывая имена обрабатываемых файлов в параметрах, либо создать ярлык на рабочем столе, ведущий к файлу скрипта и просто тянуть и бросать обрабатываемые файлы на этот ярлык.
3. Скрипт спросит что писать в колонтитул - ввести.
4. По окончании он предложит проверить изменённый файл.

Колонтитулы поменяются на заданный на всех страницах. Те страницы, на которых колонтитулы не сделаны видимыми, так и останутся невидимыми, но их содержание изменится.

Скрипт меняет только верхний центральный колонтитул каждой страницы. Если используются и надо менять левый/правый верхний и/или левый/правый/центральный нижний - можно дописать его.
AndreyG
9 апреля 2017, 21:54
Получилось, спасибо!
Я поменял Header на Footer, т.к. он снизу smile.gif А можно сделать, чтобы он был серым, как изначальный?
Носки Поэта
10 апреля 2017, 12:12

AndreyG написал: А можно сделать, чтобы он был серым, как изначальный?

Вот этого не понял. Он что:
1. Поменял цвет текста колонтитула?
2. Или цвет заливки фона?
3. Или остался активным после изменения и не переключился на основной лист? Если открыть потом файл и ткнуть в любое место листа (кроме колонтитула) - не помогает?
AndreyG
10 апреля 2017, 12:17
Ну, когда в Экселе делаешь колонтитул, при экспорта в pdf он серый, бледнее основного текста. Здесь после замены он черный.
В принципе, фигня. И так спасибо огромное smile.gif
Носки Поэта
10 апреля 2017, 12:27

AndreyG написал: Ну, когда в Экселе делаешь колонтитул, при экспорта в pdf он серый, бледнее основного текста. Здесь после замены он черный.

В Excel, как оказалось, цвет текста колонтитула регулируется как-то сильно хитро - добавлением кода цветности прямо в строку, перед непосредственно видимым текстом. Видимо поэтому, после замены строки, в которую включен код цветности на строку, в которой его нет, такое и получается.

Попробуй строчку
CODE
xBook.sheets(i).PageSetup.CenterFooter = res

заменить на
CODE
xBook.sheets(i).PageSetup.CenterFooter = "&K00-034" & res

Если поможет, но серый цвет не совсем тот будет - поиграйся с кодами яркости после &K00- от 031 до 035.

Если не поможет, то можно будет немножко поправить скрипт, чтобы читать предыдущее содержание колонтитула, вычленять из него код цветности и добавлять к текущему.

Или, можно в колонтитуле прописать что-то стандартное ("Это типа колонтитул"). И потом просто читать и заменять эту подстрочку на нужную, не меняя всего остального (что как раз и будет кодом цветности).
Носки Поэта
10 апреля 2017, 13:24

Носки Поэта написал: Если не поможет, то можно будет немножко поправить скрипт, чтобы читать предыдущее содержание колонтитула, вычленять из него код цветности и добавлять к текущему.

Можно изменить в скрипте подпрограмму Wrk на:
CODE

'Собственно подпрограмма, обрабатывающая экселевский файл
Sub Wrk(xArg)
 Dim  i, res, addFormat
 Set xBook = Excel.Workbooks.open(xArg)

 res = InputBox("Введите колонтитул")
' Обработать введенную информацию.
 If res = "" Then
    WScript.Echo "Вы ничего не ввели - ничего не меняем"
 Else
   for i = 1 to xBook.Sheets.Count Step 1
     if Left(xBook.sheets(i).PageSetup.CenterFooter,1) = "&" Then
       addFormat = left(xBook.sheets(i).PageSetup.CenterFooter,8)
     else
       addFormat = ""
     end If
     xBook.sheets(i).PageSetup.CenterFooter = addFormat & res
   next
   xBook.Save
 End If
 xBook.Close
 xBook = null
 WScript.Echo "Проверьте файл: "& xArg  
End Sub


По идее это должно оставлять тот цвет колонтитула, что был в исходном файле, причем, если колонтитулы на разных страницах были расцвечены по-разному - это сохранится.
тестируй, не забывая сохранять исходный Excel-файл ещё где-то, на всякий случай.
AndreyG
14 апреля 2017, 11:26
Спасибо, попробую поиграть.

Возник более насущный вопрос.
Существует лист, где содержится примерно такая информация:

Заголовок 1
несколько строчек данных
Заголовок 2
несколько строчек данных
.....
Заголовок 100500
несколько строчек данных


Нужно нарезать его на отдельные xls-файлы, с названиями, соответствующим заголовкам. В каждом файле должен быть только соответствующий маленький блок данных.
Таких файликов, конечно, не 100500 (около 700), но нарезать их вручную все равно не хочется. smile.gif

Носки Поэта
14 апреля 2017, 12:27

AndreyG написал: Существует лист, где содержится примерно такая информация:

Есть критерий по которому можно однозначно идентифицировать заголовок? Какой?
1. Он записан в определенном столбце под конкретной буквой, а в соседних ячейках этой строки пусто, хотя в строках данных заполнены ячейки нескольких столбцов?
2. У него определённый шрифт/болд/стиль?
3. Во всех заголовках есть слово-семафор?
4. Они именованы?
5. Специфичный формат ячейки?
6. Ещё как-то?

Проще всего, если Критерий = 1. Я уже писал похожее решение в каком-то из соседних тредов, только там информация переносилась на отдельные листы того же файла.

Сразу вопрос на будущее:
Созданные файлы сохранять
1. В ту же папку, где лежал исходный,
или
2. В другую, заранее определённую?

Лучше , конечно вариант 2.
Потому что, если у тебя исходный файл был сохранен на рабочий стол, после автоматического создания 100500 новых файлов там же, боюсь зрелище будет столь фантастическим, что даже много видевшая винда может не выдержать такого издевательства и рухнет.
AndreyG
14 апреля 2017, 12:50

Носки Поэта написал:
Есть критерий по которому можно однозначно идентифицировать заголовок?

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

Созданные файлы сохранять

Куда угодно. На рабочем столе я никогда не храню ничего, кроме ярлыков (и много лет безуспешно пытаюсь отучить мать от этого smile.gif)
В общем, если есть какое-то решение, я максимально адаптируюсь под него.
Носки Поэта
14 апреля 2017, 19:14
CODE


Option explicit

Dim Excel,  FSO, OutPath
 OutPath="F:\WSH\XLS-Out\" 'путь к директории, куда будут валиться готовые файлы.

 Set Excel = CreateObject("Excel.Application")
 Set FSO = CreateObject("Scripting.FileSystemObject")

 call mainWrk ' Собственно запуск программы

' А это просто программа, которая всем руководит
sub mainWrk
 Dim oArgs, i

' Считываем аргументы переданные при запуске
' Можно запускать её как старый добрый bat-файл с параметрами,
' в которых перечислять excel-файлы
' А можно повесить на рабочий стол ярлык,
' и если бросить на этот ярлык один или несколько excel-файлов
' они все обработаются и сохранятся там же, где и были

 Set oArgs = WScript.Arguments
 If oArgs.Count > 0 Then
   For i = 0 to oArgs.Count - 1
     call wrk(FSO.GetAbsolutePathName(oArgs(i)))
   Next
 end If
 wscript.Echo "Всё. Проверь файлы в папке " & OutPath
end sub

'Собственно подпрограмма, обрабатывающая экселевский файл
Sub Wrk(xArg)
 Dim  xSheetIn, xSheetOut, xBookIn, xBookOut, i, j, hStr, EmptyCount

 Set xBookIn = Excel.Workbooks.open(xArg) 'открываем исходный файл
'  Excel.visible = True 'при отладке лучше включать видимость

 Set xSheetIn = xBookIn.Sheets(1) ' работаем с первым листом

 i = 1 'строка начала входных данных
 j = 0 'Строка начала выходных данных
 EmptyCount = 0 'счетчик пустых строк подряд
 hStr = "" 'текущий заголовок

' читаем в цикле все строки исходного файла, пока пустая не встретится 3 раза подряд
 Do until EmptyCount >= 3
   If isEmpty(xSheetIn.Range("A" & Cstr(i)).Value) Then ' Ячейка в 1-м столбце пустая
     EmptyCount = EmptyCount + 1 'увеличиваем счетчик пустых строк подряд
   Else          'ячейка в первом столбце - не пустая
     EmptyCount = 0 ' обнуляем счетчик пустых строк подряд
     If isEmpty(xSheetIn.Range("B" & Cstr(i)).Value) Then ' А во втором столбце пустая ячейка - Значит это ЗАГОЛОВОК в первом!!!
       If hStr <> "" Then 'Если прежний заголовок был считан
         xBookOut.SaveAs FSO.BuildPath(OutPath, Replace(hStr,".","_")) 'сохраним выходной файл в заданную папку с именем заголовка, заменив в заголовке точки на подчеркивания (если есть)
         xBookOut.Saved = True
         xBookOut.Close ' и закроем выходной файл
       end If
       hStr = Trim(Cstr(xSheetIn.Range("A" & Cstr(i)).Value)) 'Считаем заголовок из ячейки в столбце "A"
       Set xBookOut = Excel.Workbooks.Add 'Создадим новый пустой файл

       if xBookOut.Sheets.Count > 1 Then ' Удалим в новом файле лишние листы, оставив один
         for j = xBookOut.Sheets.Count to 2 Step -1
           xBookOut.Sheets(j).delete
         next
       end if
       Set xSheetOut = xBookOut.Sheets(1) ' будем писать на первый лист
       xSheetOut.Name = hStr ' Лист тоже пусть называется, как заголовок
       j = 0
     else
       xSheetIn.Rows(i).copy 'Берем i-тую строку с исходного листа
       xSheetOut.Paste xSheetOut.Rows(j) 'Пишем в j-тую строку выходного листа
     End If
     j = j + 1 'увеличиваем счетчик выходных строк
   End If
   i = i + 1 'увеличиваем счетчик исходных строк
 Loop
         
 If hStr <> "" Then 'Если остался несохраненный последний файл заголовка - сохраняем
   xBookOut.SaveAs FSO.BuildPath(OutPath, Replace(hStr,".","_"))
   xBookOut.Saved = True
   xBookOut.Close
   hStr = ""
 end If
 xBookIn.Close 'закрываем исходный файл
' Освобождаем память
 xSheetIn=null
 xSheetOut=null

 xBookIn=null
 xBookOut=null
End Sub



Пояснения:
1. Сохранять и запускать, как уже писалось ранее.
2. В переменную OutPath впиши свой путь к папке сохранения. Позаботься создать её заранее.
3. Заголовок берётся из ячейки в столбце "A", если ячейка в столбце "B" пуста.
4. Можно разделять куски информации в исходном файле пустыми строками, но не больше 2-х подряд.
5. Скрипт считает, что достигнут конец файла, если встретились три пустые строки подряд. Для простоты принято, что пустой считается строка, в которой пуста ячейка в столбце "А".
6. Если в выходной папке уже есть файлы с такими именами - задолбаешься отвечать на вопросы Excel'я. Лучше перед запуском проверяй - очистил ли папку?
7. Не используй в заголовках спецсимволов (кавычки, апострофы, запятые, слэши). Фиг знает, что будет, если скрипт попытается сохранить файл с таким вычурным именем.
AndreyG
14 апреля 2017, 23:26
Спасибо огромное, в понедельник буду пробовать!
В заголовках только буквы, цифры и дефисы.
Собственно, это спецификации типовых сборок, получающихся из узлов и деталей, отличающихся размерами, количествами и фактом присутствия. Чертежи уже давно сделаны, если бы параллельно я делал экспорт спецификаций из Solidworks - сейчас бы проблем не было. Но тогда это считалось не нужным.
А исходная мега-таблица как раз и управляет генерацией деталей и сборок в Солиде. Т.е, все данные в ней есть, их просто нужно в определенном порядке вывалить на новый лист, с которого будут нарезаться спецификации.
AndreyG
16 апреля 2017, 20:04

Носки Поэта написал:
Попробуй строчку
CODE
xBook.sheets(i).PageSetup.CenterFooter = res

заменить на
CODE
xBook.sheets(i).PageSetup.CenterFooter = "&K00-034" & res

Если поможет, но серый цвет не совсем тот будет - поиграйся с кодами яркости после &K00- от 031 до 035.

Все прекрасно получилось, спасибо!
AndreyG
16 апреля 2017, 20:27

Носки Поэта написал:
Пояснения:
1. Сохранять и запускать, как уже писалось ранее.

Получилось! Пока поэкспериментировал на небольшом файлике, все работает.
Завтра буду генерить нормальную страницу для нарезки.
Спасибо огромное! 2jump.gif
Носки Поэта
17 апреля 2017, 10:24

AndreyG написал: Завтра буду генерить нормальную страницу для нарезки.

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

      xSheetIn.Rows(i).copy 'Берем i-тую строку с исходного листа
      xSheetOut.Paste xSheetOut.Rows(j) 'Пишем в j-тую строку выходного листа

придется чуть переделать. Если в процессе вылезет, что это принципиально, я вечером напишу на что надо их заменить.
AndreyG
17 апреля 2017, 10:29
Не надо. Я страницу, предназначенную для нарезки, потом перенесу в отдельный файл, как значения (оторвав от формул).
Носки Поэта
17 апреля 2017, 11:52

AndreyG написал: Не надо. Я страницу, предназначенную для нарезки, потом перенесу в отдельный файл, как значения (оторвав от формул). 

Ок. Ну, может кому-то ещё пригодится. Вместо этих 2-х строк надо взятть 3 следующие:
CODE

      xSheetIn.Rows(i).copy 'Берем i-тую строку с исходного листа
      xSheetOut.Rows(j).Select ' Будем писать в j-тую строку выходного листа
      Excel.Selection.PasteSpecial -4163, -4142, False, False  'Пишем только значения с помощью магических чисел :)
AndreyG
17 апреля 2017, 15:30
У меня на живом файле начались проблемы (в личке написал).
И еще вопрос, как к Гуру Excel'а smile.gif
При обращении к ячейке другого листа - можно ли имя листа вытаскивать из другой ячейки или описывать формулой?

Например: у меня есть листы с именами 1, 2, 3 и т.д. с совершенно одинаковой структурой.
Формируя исходную таблицу, мне нужно обращаться к одним и тем же ячейкам разных листов, например
ИНДЕКС('1'!$F$23:$AU$46;J5;(L5-1)*2+1)
ИНДЕКС('2'!$F$23:$AU$46;J5;(L5-1)*2+1)
Сейчас приходится кропотливо делать замену в текстах формул. Можно ли имя листа сделать вычисляемым? В идеале хочется сделать одну строку и р-р-растащить ее во всю необъятную длину файла.

Заранее большое спасибо!
Alx
17 апреля 2017, 16:58
Я не гуру, но в таких случаях на служебном листе формирую адрес и при помощи ДВССЫЛ вставляю куда надо формулу.
Т.е. где-то в зависимости от должна быть сформирована строка "'1'!$F$23:$AU$46;J5;(L5-1)*2+1", а потом вставлено ИНДЕКС(ДВССЫЛ(ячейка с строкой)).
AndreyG
17 апреля 2017, 19:03
Уважаемые Носки (не знаю, как тут обращаться smile.gif), огромное спасибо за помощь, но не надо тратить время на задачу нарезания таблицы. Я прикинул время и силы, необходимые на подготовку исходника, и решил, что быстрее будет проэкспортировать спецификации из чертежей. Собственно, за час сделал где-то четверть работы.
Спасибо еще раз (и за колонтитулы - это реально очень полезно и экономит кучу времени).
Дальше >>
Эта версия форума - с пониженной функциональностью. Для просмотра полной версии со всеми функциями, форматированием, картинками и т. п. нажмите сюда.
Invision Power Board © 2001-2017 Invision Power Services, Inc.
модификация - Яро & Серёга
Хостинг от «Зенон»Сервера компании «ETegro»