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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.08.2009, 17:06   #11
andrewx
Пользователь
 
Регистрация: 25.05.2009
Сообщений: 12
По умолчанию

в процессе собственных потуг появились еще вопросы:

1) как в формуле: =ВПР("продажа";вода!C1:C2;2;ЛОЖЬ) указывать не конкретно имя листа, а брать его из ячейки
здесь "вода" это и имя соответствующего листа, и имя в тойже строке первы столбец.

2) как в макросе применяющий другой макрос на нескольких листах брать эти листы из столбца листа "цены". цель: не дописывать макрос с появлением новых листов. вот мой код:
Код:
Sheets("вода").Select
    Application.Run "цена.xls!макрос5"
    Sheets("газ").Select
    Application.Run "цена.xls!макрос5"
3) а еще я уже давно хочу понять... почему некоторые таблици ексель с нумерацией столбцов - буквенные, а некоторые просто цифры, и как поменять одно на другое...
andrewx вне форума Ответить с цитированием
Старый 20.08.2009, 17:49   #12
The_Prist
Участник клуба
 
Аватар для The_Prist
 
Регистрация: 17.07.2009
Сообщений: 1,088
По умолчанию

Цитата:
Сообщение от andrewx Посмотреть сообщение
1) как в формуле: =ВПР("продажа";вода!C1:C2;2;ЛОЖЬ) указывать не конкретно имя листа, а брать его из ячейки
Изучаем функцию ДВССЫЛ
=ВПР("продажа";ДВССЫЛ(C1&"!C1:C2"); 2;0)
где C1 - ячейка с именем листа
Цитата:
Сообщение от andrewx Посмотреть сообщение
2) как в макросе применяющий другой макрос на нескольких листах брать эти листы из столбца листа "цены"
Код:
Sheets("вода").Select
    Application.Run "цена.xls!макрос5"
    Sheets(Sheets("цены").Range("A1")).Select
    Application.Run "цена.xls!макрос5"
где Sheets("вода").Range("A1") - ячейка с именем листа

Цитата:
Сообщение от andrewx Посмотреть сообщение
3) почему некоторые таблици ексель с нумерацией столбцов - буквенные, а некоторые просто цифры, и как поменять одно на другое...
Это стиль ссылок. Принципиальное отличие в основном в отображении стиля. В 2003 Excel меняется:
Параметры-Основные-снять галку с "Стиль ссылок R1C1"
в 2007
Меню(кружок в левом верхнем углу окна Excel)-Парметры Excel-Формулы--снять галку с "Стиль ссылок R1C1"
WebMoney - R298726502453; Яндекс.Деньги - 41001332272872
www.excel-vba.ru
The_Prist вне форума Ответить с цитированием
Старый 21.08.2009, 06:50   #13
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Посмотрите вложение.
При открытии txt файлов, извлекаются только 3 столбца - 1-й, 2-й и 8-й.
Но, т.к. Вы упорно отказываетесь говорить, каким образом нужно выбирать значения для вставки из txt файла, то в примере просто берутся данные из 1-го и 2-го столбцов последней строки и помещаются в столбцы "продажа" и "покупка" соответственно.
В ячейке "A10" содержится путь к папке с исходными txt файлами. Внесите в эту ячейку требуемый путь и запустите макрос "Main".
Если искомый файл не будет найден, то значения просто не будут вставлены.
Будут вопросы по коду - спрашивайте.
Вложения
Тип файла: rar цены_2.rar (13.4 Кб, 7 просмотров)
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 21.08.2009, 11:18   #14
andrewx
Пользователь
 
Регистрация: 25.05.2009
Сообщений: 12
По умолчанию

The_Prist
спасибо за формулу, поправил только тип ссылок и все заработало! хотя както странно... таблица щас в стиле А1, а пришлось прописать что стиль Р1С1 и тогда заработало...

предложеный код обновления всех листов не пашет. ругается на строку:
Код:
Sheets(Sheets("цены").Range("A1")).Select
пишет еррор 13, тайп мисматч.

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

где переключаются стили нашел - большое спасибо.

SAS888
дык в предыдущем сообщение написал как выбирается..
крута! раз и готово. но ничего не понятно прям подталкиваете к изучению Бейсика...
собсна.... тогда вопрос:
1) где найти лечебник по синтаксису и описание формул? особливо математических.
2)
Код:
Sheets("цены").Activate: a = Array("газ", "земля", "дерево", "вода")
можно задавть не явно, а чтоб они брались из первого столбца с 3ей строки и ниже до пустой ячейки?
3) в коде идет перечисление массивов... а вот что они значат не могу понять... цыфири скачат... аррей... видимо это представление внешнего текстовика. но почему именно такие цыфры???

прочие строки интуитивно понятны... даже вот такой вопрос:
Код:
[D3:E6].ClearContents
как я понимаю очищает ячейки, если так, но видимо этого можно не делать, так как они будут перезаписаны? или это на случай отсутствия внешнего файла.... ага.. понял.
andrewx вне форума Ответить с цитированием
Старый 21.08.2009, 11:34   #15
andrewx
Пользователь
 
Регистрация: 25.05.2009
Сообщений: 12
По умолчанию

хмм.... единица во втором значении означает, что этот столбец нам нужен, а 9ка - что нет.... походу так..... нужен лечебник... срочно...
andrewx вне форума Ответить с цитированием
Старый 21.08.2009, 11:35   #16
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

1) Сначала, вполне достаточно встроенного в VBA Excel help-а.

2) Тогда макрос будет таким:
Код:
Sub Main()
    Dim x As Range, i As Long, FPath As String, FName As String, a() As Variant
    Application.ScreenUpdating = False: Application.DisplayAlerts = False
    Sheets("цены").Activate: a = Range([A3], [A3].End(xlDown)).Value: FPath = [A10]
    [B:F].Insert: [G:K].Copy [B1]: [D3:E6].ClearContents
    Set x = Intersect(ActiveSheet.UsedRange, [G:IV]): x.Value = x.Value
    For i = LBound(a, 1) To UBound(a, 1)
        FName = Dir(FPath & "*" & a(i, 1) & "*.txt")
        If FName <> "" Then
            Workbooks.OpenText Filename:=FPath & FName, Origin:=866, StartRow:=1, _
                DataType:=xlDelimited, Comma:=True, FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 9), _
                Array(4, 9), Array(5, 9), Array(6, 9), Array(7, 9), Array(8, 1), Array(9, 9), Array(10, 9), _
                Array(11, 9), Array(12, 9), Array(13, 9), Array(14, 9), Array(15, 9))
            With ThisWorkbook.Sheets("цены")
                .Cells(i + 2, "D") = Val(Cells(Rows.Count, 1).End(xlUp))
                .Cells(i + 2, "E") = Val(Cells(Rows.Count, 2).End(xlUp))
                ActiveWorkbook.Close , False
    End With: End If: Next
End Sub
3) В том же help-е смотрим опции метода OpenText, обращаем внимание на XlColumnDataType и видим справку:
Цитата:
XlColumnDataType can be one of these XlColumnDataType constants.
xlGeneralFormat General
xlTextFormat Text
xlMDYFormat MDY date
xlDMYFormat DMY date
xlYMDFormat YMD date
xlMYDFormat MYD date
xlDYMFormat DYM date
xlYDMFormat YDM date
xlEMDFormat EMD date
xlSkipColumn Skip Column
Так, например запись FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 9) означает, что при открытии текстового файла, столбец 1 будет иметь текстовый формат (Array(1, 1)), столбец 2 - тоже (Array(2, 1)), а столбец 3 будет пропущен (Array(3, 9)) и т.д.
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 21.08.2009, 12:54   #17
andrewx
Пользователь
 
Регистрация: 25.05.2009
Сообщений: 12
По умолчанию

напрягаю мозг в попытке вспомнить что знал о бейсике с ПК "Львов" в далекие 20 лет назад....

во вложении все файлы. добавил столбец с информацей о том какой общий "вес" меня интересует. вес - это 2ой столбец во внешних файлах.

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

проблема в том, что не могу в цикл ввернуть количество строк во внешнем файле. оператор что нашел в предложеном варианте - работать не захотел:
Код:
For k = 1 To .End(xlUp)
плиззз хелп

еть.... поиск хелпа в бейсике - не пашет....
Вложения
Тип файла: zip цены_3.zip (17.1 Кб, 6 просмотров)

Последний раз редактировалось andrewx; 21.08.2009 в 13:27.
andrewx вне форума Ответить с цитированием
Старый 21.08.2009, 16:12   #18
andrewx
Пользователь
 
Регистрация: 25.05.2009
Сообщений: 12
По умолчанию

хелповик в ексели неработает и все както куцо.
нашел ответы в яндексе. все исправил. все работает.

Всем Огромное спасибо за помощь! Особенно SAS888

если когданить забуду как это все работает - стукнусь в асю
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