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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.04.2010, 12:18   #1
женя2010
Пользователь
 
Регистрация: 16.04.2010
Сообщений: 49
Сообщение скан по столбцам

Добрый день.

В приложении файл. ТАм на кнопку построить график - "стряпан" общими усилиями макрос-программа. Смысл программы - анализ !!столбца!!! таблицы "4.Output" на наличие больше одного производителя с обьемом больше НУЛЯ. Если такой производитель имеется(в маем случае КИТАЙ), то создаеться новая вкладка(даные из вкладки "Арр"),строится примитивная табличка.А потом рисуется небольшой график. А теперь вопрос- как сделать так что бы !!ВСЯ!! табличка( точнее ее столбцы) анализировались на удовлетворение условия (больше одного производителя у которого больше НУЛЯ производство), и в зависимости от наличия такого стоилися новые дополнительные вкладки( ну а на них таблица и граФИК)..ПОДСКАЖИТЕ КОД, или как его начать реализовывать????
Вложения
Тип файла: rar 5Макрос+MARKET MODEL 2008_Glass Insulators.rar (111.4 Кб, 11 просмотров)
женя2010 вне форума Ответить с цитированием
Старый 28.04.2010, 16:04   #2
EugeneS
Форумчанин
 
Регистрация: 06.08.2009
Сообщений: 472
По умолчанию

Добрый день, Евгений

размеры данной таблицы всегда одинаковые по количеству строк, столбцов или нет?
EugeneS вне форума Ответить с цитированием
Старый 28.04.2010, 16:35   #3
женя2010
Пользователь
 
Регистрация: 16.04.2010
Сообщений: 49
По умолчанию

Пока что пишу макрос на посточнное количество строк и ячеек которые стоит анализировать. Тоесть да.
женя2010 вне форума Ответить с цитированием
Старый 28.04.2010, 17:10   #4
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Попробуйте сделать так:

Код:
Sub Main()
    ' shl - кодовое имя листа LINEARZ
    Dim cell1 As Range, cell2 As Range
    Set cell1 = shl.UsedRange.Find("4.  Output")  ' строка заголовка таблицы
    Set cell2 = shl.UsedRange.Find("Total Demand")    ' ячейка из последней строки таблицы

    Dim t As Range    ' таблица на листе LINEARZ
    Set t = Intersect(cell1.MergeArea.EntireColumn, shl.[c:iv], shl.Range(cell1.Offset(2), cell2.Offset(-1)).EntireRow)
    ' в данном примере t.Address = "$C$268:$CL$280"

    Dim col As Range    ' столбец таблицы
    For Each col In t.Columns
        страна = col.Cells(1).Offset(-1)    ' ячейка НАД столбцом
        КолвоПроизводителей = Application.CountIf(col, ">0")
        If КолвоПроизводителей > 1 Then
            MsgBox "Строится график по стране """ & страна & """" & _
                   vbNewLine & "Количество производителей: " & КолвоПроизводителей, _
                   vbInformation, "Диапазон ячеек " & col.Address

            ' здесь ваш код создания листа и графика
        End If
    Next
End Sub
Пример в виде файла: http://excelvba.ru/XL_Files/Sample__...__19-09-50.zip
EducatedFool вне форума Ответить с цитированием
Старый 28.04.2010, 18:02   #5
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Значительно усложнил код - теперь листы создаются и заполняются программно:




Лист App удалил - он не нужен, поскольку все необходимые данные присутствуют на листе LINEARZ

Добавил несколько функций - например, эту:

Код:
Function ОбслуживаниеПеременногоРынка(ByRef Таблица As Range, _
                                      ByVal Страна As String, _
                                      ByVal Производитель As String) As Double
    Dim col As Range, ro As Range: On Error Resume Next
    Set col = Таблица.Rows(1).Find(Страна).EntireColumn
    Set ro = Таблица.Columns(1).Find(Производитель).EntireRow
    ОбслуживаниеПеременногоРынка = Val(Replace(Intersect(ro, col), ",", "."))
End Function

Private Sub test_ОбслуживаниеПеременногоРынка()
    MsgBox ОбслуживаниеПеременногоРынка([b94:iv107], "Алжир", "YUAIZ")
End Sub

Проверяйте.

Если ваше предложение по оплате ещё в силе - обращайтесь в личку, продолжим делать программу.
EducatedFool вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Получить скан код после WM_KEYEVENT TwiX Общие вопросы Delphi 1 21.04.2010 23:09
Не разберу скан кода по встраиваемым функциям fs444 Общие вопросы C/C++ 3 22.03.2010 22:06
Считывание скан кода IgorKr Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 6 25.02.2009 00:47
Скан диска ZYRGiX Win Api 7 30.12.2007 14:05