Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.08.2009, 15:34   #1
andrewx
Пользователь
 
Регистрация: 25.05.2009
Сообщений: 12
По умолчанию импорт из разноименных файлов + "замораживание" данных

Здравствуйте.
У меня 2 проблемки, искал на форуме, но видимо ищу как-то не так, ответов не нашел.

1) мне необходимо импортировать данные файла txt на отдельный лист, проблема в том, что с течением времени эти исходные файлы имеют различную концовку (дата + случайный набор символов). возможно ли както задать критерий импорта из файла только по части имени. в директории где будет находиться файл с таким началом будет только один файл. в сам документ будут импортироваться несколько файлов.


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

Заранее спасибо.

ЗЫ и еще вопрос: а можно ли при импорте из внешенего файла импортировать не всего его целиком на отдельный лист, а только конкретную "ячейку" в нужную ячейку экселя?
andrewx вне форума Ответить с цитированием
Старый 19.08.2009, 20:50   #2
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Цитата:
Сообщение от andrewx Посмотреть сообщение
Здравствуйте.
искал на форуме, но видимо ищу как-то не так, ответов не нашел.
1.По этой методике перебрать все текстовые файлы,выбрать необходимый и экспортировать данные.
http://www.programmersforum.ru/showthread.php?t=39712
2.Защитить ячейку от изменений
Цитата:
ЗЫ и еще вопрос: а можно ли при импорте из внешенего файла импортировать не всего его целиком на отдельный лист, а только конкретную "ячейку" в нужную ячейку экселя?
Возможно.надо знать как минимум,что и куда
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 19.08.2009, 20:58   #3
motorway
Участник клуба
 
Регистрация: 28.06.2009
Сообщений: 1,950
По умолчанию

2) Способ не лучший, но можно после вычислений присвоить переменной какой-нибудь значение 1 и скопировать на скрытый лист замороженные значения. А далее проверять в Worksheet_Change, если адрес измененной ячейки входит в замороженный диапазон и переменная равна 1, присваивать ей сохраненное значение.

Последний раз редактировалось motorway; 19.08.2009 в 21:01.
motorway вне форума Ответить с цитированием
Старый 20.08.2009, 05:43   #4
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Все, что Вы хотите - возможно.
Будет пример файла - будет и конкретный ответ.
Обязательно укажите, что откуда брать и куда конкретно вставлять. Что "замораживать", а что нет. Что делать, если txt файла с установленной маской нет? Как задавать путь к папке с txt файлами?
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 20.08.2009, 10:46   #5
andrewx
Пользователь
 
Регистрация: 25.05.2009
Сообщений: 12
По умолчанию

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

конкретные файлы постараюсь выложить сегодня.

doober, вариант с перебором файлов в одну сводную таблицу не совсем подходит. исходных файлов будет от 20 до 60 штук разных. в каждом файле (текстовой) таблица из которой нужны только 2 первых столбца. т.е. получается либо нужно каждую таблицу на отдельный лист импортировать, либо в один лист, но только по 2 столбца из исходных файлов.

про заморозку:
на листе где нужно делать заморозку таблица будет расти с каждым новым использованием: т.е. 4 столбца копируются и вставляются. все предыдущие столбцы должны быть заморожены а текущий делать расчет из внешних данных.
motorway Ваш вариант я совсем не понял, видимо с экселем я всеж конкретно на Вы.

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

Упс... а защитить отдельные ячейки на листе не получается... либо книгу, либо лист..


а возможно ли используя фонкцию или скрипт некую область данных конвертировать: вычесленные данные (результат) заменяют формулу в этой ячейке?

в прикрепреном файле: лист "цены" постоянно расширяется в право столбец 2-6 копируются и вставляются со 2го. все что отъезжает направо - должно остаться без изменения. первые стобцы (2-6) вычисляются единожды. если файла исходного нет - какнибудь крикнуть или подсветить, но это если только как бонус. если файла не будет видимо не будет и входных данных, а значит соответстующая ячейка будет нулевой... ее сразу будет видно. файлы исходные и ексель файл будут лежать в разных папках, и пусть к исходникам скорее всего будет разным на разных компах. но статичных на каждом конкретном компьютере. можно задать в отдельной ячейке путь до исходников.
Вложения
Тип файла: zip проба.zip (17.7 Кб, 18 просмотров)

Последний раз редактировалось andrewx; 20.08.2009 в 10:50.
andrewx вне форума Ответить с цитированием
Старый 20.08.2009, 11:01   #6
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

1. Кто, когда и каким образом копирует (добавляет) столбцы? Можно по этому событию удалять все формулы из нужных столбцов и оставлять только вычисленные значения.
2. Из каких txt файлов какие данные в какие ячейки требуется вставлять?
3. Если при запуске макроса выводить окно с запросом указать путь к папке с исходными файлами, то это устроит?
4. Какая часть имени txt файлов неизменна?
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 20.08.2009, 11:20   #7
andrewx
Пользователь
 
Регистрация: 25.05.2009
Сообщений: 12
По умолчанию

с заморозкой вроде разобрался.... нашел функцию меню "специальная вставка". видимо это легко забить как макрос, да вобщем и руками - 5 секунд работы. если это можно сделать еще более элегантно, буду рад узнать.

SAS888

1) человек предварительно генерит txt файлы, затем открывает ексель, копирует столбцы 2-6, вставляет их (смещая все в право), затем нужно заморозить столбцы 7-11 (те что дальше уже должны быть доэтого заморожены) и после этого обновляет данные из внешних источников. т.е. по решению о дополнении файла можно удалять формулы, но первые столбцы должны с ними остаться, иначе в следующий раз надо будет их воять заново...

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

3) при каждом запуске - нет. лучше б если он брал адрес из ячейки. пока насквозь просматривал форум - гдето видел такой вопрос и ответ (или чтото похожее). так что проще будет один раз ввести адрес, чем каждый раз его прописывать.

4) "пустошь-земля-", "лес-дерево-" - это неизменная часть, затем идет дата, и походу дела час, минута, секунда... это изменчево.
andrewx вне форума Ответить с цитированием
Старый 20.08.2009, 12:10   #8
andrewx
Пользователь
 
Регистрация: 25.05.2009
Сообщений: 12
По умолчанию

УПД:

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

а вот с макросом импорта из файла вышла трабла:
скопировал название листа (вода), нажал импортировать данные, название файла набрал: *вода*, ентер, в окне остался тока один файл - его выбрал. при попытке запуска макроса выдал ошибку: run-time error '1004': Aplication-defined or object-defined error... видать чета не так определено... в дебаге ссылка сюда: With Selection.QueryTable
andrewx вне форума Ответить с цитированием
Старый 20.08.2009, 12:30   #9
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Цитата:
макрос с заморозкой сдел. это оказывается очень просто и удобно!
Удалить формулы, оставив значения, начиная со столбца "G" и до конца, можно, например, так:
Код:
Dim x As Range: Set x = Intersect(ActiveSheet.UsedRange, [G:IV])
x.Value = x.Value
Что касаеися всего остального, то предлагаю так:
Запускаем макрос. Он все делает. Покурить не успеваем.
Для того, чтобы написать такой макрос мне необходимо знать следующее:
1. Какие столбцы нужно импортировать из текстового файла?
2. Что, и по каким критериям (условиям) из них выбирать?
3. В какие ячейки вставлять?

P.S. Зачем использовать QueryTable? Excel очень даже "дружит" с txt файлами. И открывает их так, как нам нужно.
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 20.08.2009, 12:52   #10
andrewx
Пользователь
 
Регистрация: 25.05.2009
Сообщений: 12
По умолчанию

в бейсике не рублю совсем. то что натворил мой макрос:

Код:
Sub Макрос1()
'
' Макрос1 Макрос
' заморозка
'

'
    Range("D3:E6").Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
замена нужно по сути тока с 7 до 11 столбца, дальше все уже будет замененное. не знаю влияет ли это на время обработки.
но собсна куда воткнуть предложенный код? вместо всего что в моем? (все что за 5 запятьй?)

о том что все можно сделать одним нажатием комбинации контл-"" - я догодался это будет просто суппер!

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

каждому ресурсу соответствует 2 ячейки (покупка и родажа) эти данные мы берем из первого столбца исходного файла. по берем мы их по критерию: если сумма второго столбца с верху до некой позиции >= некоторому значению, то берем данные из первого столбца в этом месте. суть в том, что у разных ресурсов это значение разное. гдето 14000, гдето 72000. и сколько будет таких значений - неизвестно, их будет много и потом их будет все больше. поэтому это наверно проще вписать в формулу каждой конкретной ячейки на листе "цены"?

аййай... нам нужен еще и 8 столбец... так как данные для "покупка" берется там где 8ой = true, по такомуже критерию как описано выше.

Про QueryTable низнаю даже что это.
andrewx вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
при вводе на листе "магазин"- код товара появлялось "описание" товара из "склада" с "продажной ценой" 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