|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
19.08.2009, 15:34 | #1 |
Пользователь
Регистрация: 25.05.2009
Сообщений: 12
|
импорт из разноименных файлов + "замораживание" данных
Здравствуйте.
У меня 2 проблемки, искал на форуме, но видимо ищу как-то не так, ответов не нашел. 1) мне необходимо импортировать данные файла txt на отдельный лист, проблема в том, что с течением времени эти исходные файлы имеют различную концовку (дата + случайный набор символов). возможно ли както задать критерий импорта из файла только по части имени. в директории где будет находиться файл с таким началом будет только один файл. в сам документ будут импортироваться несколько файлов. 2) в ячейках формулами проводятся расчеты, исходные данные из другого листа или внешнего файла. с течением времени, эти внешение данные меняются. возможно ли результат расчета сегодня "заморозить" чтоб не зависимо от изменения внешних данных значение данной ячейки (группы ячеек) не изменялись? Заранее спасибо. ЗЫ и еще вопрос: а можно ли при импорте из внешенего файла импортировать не всего его целиком на отдельный лист, а только конкретную "ячейку" в нужную ячейку экселя? |
19.08.2009, 20:50 | #2 | ||
Старожил
Регистрация: 02.05.2009
Сообщений: 3,907
|
Цитата:
http://www.programmersforum.ru/showthread.php?t=39712 2.Защитить ячейку от изменений Цитата:
Анализ,обработка данных Недорого
|
||
19.08.2009, 20:58 | #3 |
Участник клуба
Регистрация: 28.06.2009
Сообщений: 1,950
|
2) Способ не лучший, но можно после вычислений присвоить переменной какой-нибудь значение 1 и скопировать на скрытый лист замороженные значения. А далее проверять в Worksheet_Change, если адрес измененной ячейки входит в замороженный диапазон и переменная равна 1, присваивать ей сохраненное значение.
Последний раз редактировалось motorway; 19.08.2009 в 21:01. |
20.08.2009, 05:43 | #4 |
Старожил
Регистрация: 05.12.2007
Сообщений: 4,180
|
Все, что Вы хотите - возможно.
Будет пример файла - будет и конкретный ответ. Обязательно укажите, что откуда брать и куда конкретно вставлять. Что "замораживать", а что нет. Что делать, если txt файла с установленной маской нет? Как задавать путь к папке с txt файлами?
Чем шире угол зрения, тем он тупее.
|
20.08.2009, 10:46 | #5 |
Пользователь
Регистрация: 25.05.2009
Сообщений: 12
|
Премного благодарен за ответы.
Пока вчера был отлучен от компьютера, подумал, что первую задачу можно решить макросом, хотя ниразу с этим не сталкивался. конкретные файлы постараюсь выложить сегодня. doober, вариант с перебором файлов в одну сводную таблицу не совсем подходит. исходных файлов будет от 20 до 60 штук разных. в каждом файле (текстовой) таблица из которой нужны только 2 первых столбца. т.е. получается либо нужно каждую таблицу на отдельный лист импортировать, либо в один лист, но только по 2 столбца из исходных файлов. про заморозку: на листе где нужно делать заморозку таблица будет расти с каждым новым использованием: т.е. 4 столбца копируются и вставляются. все предыдущие столбцы должны быть заморожены а текущий делать расчет из внешних данных. motorway Ваш вариант я совсем не понял, видимо с экселем я всеж конкретно на Вы. хотелось бы конечно больше автоматизации, но если защита отдельных ячеек убережет их от автоматического вычисления формул в них - то это вполне сойдет. Упс... а защитить отдельные ячейки на листе не получается... либо книгу, либо лист.. а возможно ли используя фонкцию или скрипт некую область данных конвертировать: вычесленные данные (результат) заменяют формулу в этой ячейке? в прикрепреном файле: лист "цены" постоянно расширяется в право столбец 2-6 копируются и вставляются со 2го. все что отъезжает направо - должно остаться без изменения. первые стобцы (2-6) вычисляются единожды. если файла исходного нет - какнибудь крикнуть или подсветить, но это если только как бонус. если файла не будет видимо не будет и входных данных, а значит соответстующая ячейка будет нулевой... ее сразу будет видно. файлы исходные и ексель файл будут лежать в разных папках, и пусть к исходникам скорее всего будет разным на разных компах. но статичных на каждом конкретном компьютере. можно задать в отдельной ячейке путь до исходников. Последний раз редактировалось andrewx; 20.08.2009 в 10:50. |
20.08.2009, 11:01 | #6 |
Старожил
Регистрация: 05.12.2007
Сообщений: 4,180
|
1. Кто, когда и каким образом копирует (добавляет) столбцы? Можно по этому событию удалять все формулы из нужных столбцов и оставлять только вычисленные значения.
2. Из каких txt файлов какие данные в какие ячейки требуется вставлять? 3. Если при запуске макроса выводить окно с запросом указать путь к папке с исходными файлами, то это устроит? 4. Какая часть имени txt файлов неизменна?
Чем шире угол зрения, тем он тупее.
|
20.08.2009, 11:20 | #7 |
Пользователь
Регистрация: 25.05.2009
Сообщений: 12
|
с заморозкой вроде разобрался.... нашел функцию меню "специальная вставка". видимо это легко забить как макрос, да вобщем и руками - 5 секунд работы. если это можно сделать еще более элегантно, буду рад узнать.
SAS888 1) человек предварительно генерит txt файлы, затем открывает ексель, копирует столбцы 2-6, вставляет их (смещая все в право), затем нужно заморозить столбцы 7-11 (те что дальше уже должны быть доэтого заморожены) и после этого обновляет данные из внешних источников. т.е. по решению о дополнении файла можно удалять формулы, но первые столбцы должны с ними остаться, иначе в следующий раз надо будет их воять заново... 2)текстовые файлы имеют соответствующее имя (вода, газ...) в данном приеме была взята произвольная ячейка из первого столбца, в последствии будет проводится анализ по 2м столбцам из исходного файла, выбираться значение в первом стобце и вставляться на лист "цены" соответтствующего ресурса в стобцы "покупка" и "продажа". Наверно можно делать все это без импорта на отдельный лист или листы... но честно говоря боюсь, что потом подзабыв что и как было сделано - буду стучаться к Вам вновь, чтоб обяснили как что работает. если данные будут на отдельном листе (только 2 столбца, или каждый ресурс на отдельном листе) то это будет нагляднее. ну в конце концев... навреняка можно сначала импортировать все целиком на отдельные листы, а потом вычлинить по 2 столбца в отдельный лист, а те стереть. навреняка это делатеся макросом - с этим я наверно справляюсь. 3) при каждом запуске - нет. лучше б если он брал адрес из ячейки. пока насквозь просматривал форум - гдето видел такой вопрос и ответ (или чтото похожее). так что проще будет один раз ввести адрес, чем каждый раз его прописывать. 4) "пустошь-земля-", "лес-дерево-" - это неизменная часть, затем идет дата, и походу дела час, минута, секунда... это изменчево. |
20.08.2009, 12:10 | #8 |
Пользователь
Регистрация: 25.05.2009
Сообщений: 12
|
УПД:
уряя! макрос с заморозкой сдел. это оказывается очень просто и удобно! (не обращайте внимания на нубскую радость ) а вот с макросом импорта из файла вышла трабла: скопировал название листа (вода), нажал импортировать данные, название файла набрал: *вода*, ентер, в окне остался тока один файл - его выбрал. при попытке запуска макроса выдал ошибку: run-time error '1004': Aplication-defined or object-defined error... видать чета не так определено... в дебаге ссылка сюда: With Selection.QueryTable |
20.08.2009, 12:30 | #9 | |
Старожил
Регистрация: 05.12.2007
Сообщений: 4,180
|
Цитата:
Код:
Запускаем макрос. Он все делает. Покурить не успеваем. Для того, чтобы написать такой макрос мне необходимо знать следующее: 1. Какие столбцы нужно импортировать из текстового файла? 2. Что, и по каким критериям (условиям) из них выбирать? 3. В какие ячейки вставлять? P.S. Зачем использовать QueryTable? Excel очень даже "дружит" с txt файлами. И открывает их так, как нам нужно.
Чем шире угол зрения, тем он тупее.
|
|
20.08.2009, 12:52 | #10 |
Пользователь
Регистрация: 25.05.2009
Сообщений: 12
|
в бейсике не рублю совсем. то что натворил мой макрос:
Код:
но собсна куда воткнуть предложенный код? вместо всего что в моем? (все что за 5 запятьй?) о том что все можно сделать одним нажатием комбинации контл-"" - я догодался это будет просто суппер! а вот с остальным сложнее, да и если честно хочется не просто получить готовый результат, а самому все понять и довести до ума. все равно потом придется всему этому делу обрастать дальше. наверняка. каждому ресурсу соответствует 2 ячейки (покупка и родажа) эти данные мы берем из первого столбца исходного файла. по берем мы их по критерию: если сумма второго столбца с верху до некой позиции >= некоторому значению, то берем данные из первого столбца в этом месте. суть в том, что у разных ресурсов это значение разное. гдето 14000, гдето 72000. и сколько будет таких значений - неизвестно, их будет много и потом их будет все больше. поэтому это наверно проще вписать в формулу каждой конкретной ячейки на листе "цены"? аййай... нам нужен еще и 8 столбец... так как данные для "покупка" берется там где 8ой = true, по такомуже критерию как описано выше. Про QueryTable низнаю даже что это. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
при вводе на листе "магазин"- код товара появлялось "описание" товара из "склада" с "продажной ценой" | aleksei78 | Microsoft Office Excel | 13 | 25.08.2009 12:04 |
Динамическое создание "суб-меню" из файлов в заданном каталоге | Abhorrer | Общие вопросы Delphi | 5 | 14.03.2009 21:47 |
настроить при открытии Excel 2003 в окошке "Тип файлов" вывод пункта "Все файлы (*.*)" по умолчанию? | Unior | Microsoft Office Excel | 2 | 01.03.2009 02:42 |
блок "cont" с права не принимает значение "margin: 10px;" которое описано в body | tabikA | HTML и CSS | 5 | 24.02.2009 21:50 |
Под прикрытием "кризиса" наши доблестные "управители" хотят утопить нас в радиоактивных отходах | mihali4 | Свободное общение | 1 | 17.01.2009 01:43 |