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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.03.2013, 11:58   #1
Lohengrin
 
Регистрация: 25.02.2013
Сообщений: 6
По умолчанию Копирование значений с условиями в определенное место на другом листе

Добрый день, коллеги!

Очень требуется помощь с макросом, не получается самому добиться результата(

Строки на листах Supply и Balance соответствуют гостиницам.
Макрос проверяет для каждой строки (гостиницы) листа Balance, есть ли ненулевые значения по столбцам на листе "Balance".
Дальше он должен вставлять их в лист "Supply" в свободные ячейки попарно в правильном порядке - сначала соединенную информацию из верхних ячеек (с 2 по 5) каждого столбца, потом собственно цифру по строке-гостинице. Результат виден сейчас на листе Supply, но что-то не полностью работает - подтягиваются не все цифры(
Lohengrin вне форума Ответить с цитированием
Старый 01.03.2013, 12:01   #2
Lohengrin
 
Регистрация: 25.02.2013
Сообщений: 6
По умолчанию

Собственно файл
Вложения
Тип файла: zip Example5.zip (320.1 Кб, 13 просмотров)
Lohengrin вне форума Ответить с цитированием
Старый 01.03.2013, 12:03   #3
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

выкладывайте пример вашего файла. и что вы хотите в итоге получить.
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Старый 01.03.2013, 12:14   #4
Lohengrin
 
Регистрация: 25.02.2013
Сообщений: 6
По умолчанию

Исходный файл выше, а в этом файле на листе Supply то, что нужно получить.
Вложения
Тип файла: zip Example6.zip (320.3 Кб, 14 просмотров)
Lohengrin вне форума Ответить с цитированием
Старый 01.03.2013, 18:22   #5
Lohengrin
 
Регистрация: 25.02.2013
Сообщений: 6
По умолчанию

Хм, никто не сможет помочь? Уважаемый DiemonStar ?
Lohengrin вне форума Ответить с цитированием
Старый 01.03.2013, 18:37   #6
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Геморойно макросом... Поэтому все и молчат.
Проще UDF написать - на вход что искать, где искать, и диапазон откуда тянуть данные.
Написать её как формулу массива - так сразу в весь диапазон (по строке) и вводить.
Если годится - возможно к понедельнику подумаю... пятница всёж

P.S. Единственное что смущает - а столбцов хватит? Вам на каждый столбец исходных данных нужно 2 столбца для результата - неувязочка может получиться...
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 01.03.2013 в 18:40.
Hugo121 на форуме Ответить с цитированием
Старый 01.03.2013, 18:51   #7
Lohengrin
 
Регистрация: 25.02.2013
Сообщений: 6
По умолчанию

Если честно, я не понимаю, что такое UDF, но любое решение подойдет. Столбцов хватит, весь вопрос в том, насколько долго будет работать..
А не получится исправить в моем макросе какую-нибудь неправильную строку и все? он же почти работает))

Спасибо большое!
Lohengrin вне форума Ответить с цитированием
Старый 01.03.2013, 19:06   #8
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Ну можно и Ваш подкорректировать - добавил 2 строки, и одну передвинул, вроде всё
Но прошу учесть - это не мой код, я бы так не писал
Код:
Sub Macro2()
'
' Macro2 Macro
'

'
    Sheets("Balance").Activate
    Application.ScreenUpdating = False

    Dim j As Integer
    Dim k As Integer


    For k = 13 To 20
        NextColumn = 17 'Range("q3").End(xlUp).Column

        For j = 18 To 20


            Sheets("Balance").Activate
            If Cells(k, j) > 0 Then
                rez1 = Cells(k, j)
                rez2 = Cells(2, j) + "; " + Cells(3, j) + "; " + Cells(4, j) + "; " + Cells(5, j)

                Sheets("Supply").Activate


                Cells(k - 10, NextColumn) = rez2
                NextColumn = NextColumn + 1
                Cells(k - 10, NextColumn) = rez1
                NextColumn = NextColumn + 1


            End If

        Next j

    Next k

    Application.ScreenUpdating = True
End Sub
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 01.03.2013 в 19:10.
Hugo121 на форуме Ответить с цитированием
Старый 01.03.2013, 19:17   #9
Lohengrin
 
Регистрация: 25.02.2013
Сообщений: 6
По умолчанию

Спасибо огромное!! вроде бы все работает) хороших выходных Вам!
Lohengrin вне форума Ответить с цитированием
Старый 01.03.2013, 19:22   #10
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

И Вам спасибо! И хорошо отдохнуть! Погоды правда не обещают ещё пока
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 на форуме Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вставить символ в определенное место (Delphi) HSR Помощь студентам 4 19.11.2012 20:37
Поиск значений на другом листе из разных ячеек и перенос их на первый лист madex Microsoft Office Excel 14 26.10.2012 14:37
Записать данные в файл в определенное место,С++ RockGirl Помощь студентам 1 16.05.2011 12:28
сверка значений на другом листе подстановка подходящего marc-nikita Microsoft Office Excel 5 07.02.2010 14:10
ячейка на одном листе, в которую необходимо подставлять данные из столбца, находящегося на другом листе Ирина Водолагина Microsoft Office Excel 4 04.03.2009 23:38