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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.04.2014, 17:19   #1
denn1812
 
Регистрация: 21.04.2014
Сообщений: 8
По умолчанию Макрос извлекающий отдельную информацию из ячеек

Здравствуйте,
Нужна очень помощь Ваша.
Приложил файл.
В нем есть таблица. Мне нужно из таблицы делать плоскую таблицу.
Пример плоской на другом листе.
Т.е мне нужно выдирать из ячеек определенную информацию.
Например в ячейке E25, там 2 разных счета, а в F25 их 4.
В идеале было бы здорово чтобы все это делалось автоматически.
т.е выдернуты счета из ячеек, обороты счетов (ОК,ОД,СДН) стоящие перед счетом, движение F00,F09 и т.д.
Просто у меня таких таблиц оч много, и было бы супер хоть как нибудь облегчить себе работу.

Спасибо заранее,
Вложения
Тип файла: zip 1.zip (15.9 Кб, 11 просмотров)
denn1812 вне форума Ответить с цитированием
Старый 22.04.2014, 01:18   #2
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Запускайте с первого листа. Адреса ячеек вставляются как гиперссылки.
Код:
Sub denn1812()
Dim u(), r&, c&, schet, r1&, sh As Worksheet, re As Object, x, h
u = ActiveSheet.UsedRange.Value
h = "#'" & Replace$(ActiveSheet.Name, "'", "''") & "'!"  'заготовка для гиперссылки
Set sh = Sheets("Плоская табл")
r1 = 3                                                   'строка, к кот. начинать вывод
schet = u(6, 1)
Set re = CreateObject("vbscript.regexp")
re.Global = True
re.ignorecase = True
re.Pattern = "([a-zа-я]+) Сч. (\d+)"
For r = 7 To UBound(u)                                   'цикл по строкам
  If Not IsEmpty(u(r, 1)) Then schet = u(r, 1)
  For c = 5 To UBound(u, 2)                              'цикл по столбцам
    For Each x In re.Execute(u(r, c))
'      sh.Cells(r1, 3) = Cells(r, c).Address(0, 0)       'простой ввод адреса ячейки
      sh.Hyperlinks.Add sh.Cells(r1, 3), "", h & Cells(r, c).Address, , Cells(r, c).Address(0, 0)
      sh.Cells(r1, 4) = x.submatches(1)
      sh.Cells(r1, 5) = x.submatches(0)
      sh.Cells(r1, 7) = schet
      sh.Cells(r1, 8) = u(4, c)
      r1 = r1 + 1
    Next
  Next
Next
End Sub
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 22.04.2014, 01:18   #3
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

del.......
exceleved@yandex.ru Яндекс.Деньги: 410011500007619

Последний раз редактировалось Казанский; 22.04.2014 в 01:43.
Казанский вне форума Ответить с цитированием
Старый 22.04.2014, 17:19   #4
denn1812
 
Регистрация: 21.04.2014
Сообщений: 8
По умолчанию

Спасибо тебе большое, очень рад все работает!!отблагодарю позже.

А можно чуть апдейтить код?
Есть много ячеек где написано "В указанную ячейку данные из Системы не выгружаются" или содержат эту надпись. Хотелось бы чтобы эти ячейки он не пропускал, а тоже имел ввиду и писал "В указанную ячейку данные из Системы не выгружаются" под (r1, 4) столбцом, ну и пусть номер счета (в плоской таблице "счет" сохранится, да и другие тоже если это облегчит работу).
denn1812 вне форума Ответить с цитированием
Старый 23.04.2014, 13:47   #5
denn1812
 
Регистрация: 21.04.2014
Сообщений: 8
По умолчанию

Уже не надо, сам сделал.спасибо
denn1812 вне форума Ответить с цитированием
Старый 23.04.2014, 15:01   #6
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Точно сам!:D
http://www.planetaexcel.ru/forum/ind...ID=1&TID=56663
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 23.04.2014, 22:24   #7
denn1812
 
Регистрация: 21.04.2014
Сообщений: 8
По умолчанию

:D ну сам догадался где еше спросить))) просто срочно надо было
denn1812 вне форума Ответить с цитированием
Старый 24.04.2014, 15:37   #8
denn1812
 
Регистрация: 21.04.2014
Сообщений: 8
По умолчанию

Снова к Вам обращаюсь.
Вот вы сделали гиперссылки. А можно сделать чтобы вся сторока окрашивалась в тот цвет в котором находится ячейка на которую ссылается гиперссылка?
denn1812 вне форума Ответить с цитированием
Старый 24.04.2014, 15:43   #9
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

До или после добавления гиперссылки вставьте
Код:
      sh.Rows(r1).Interior.Color = Cells(r, c).Interior.Color
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 25.04.2014, 16:37   #10
denn1812
 
Регистрация: 21.04.2014
Сообщений: 8
По умолчанию

Большое большое спасибо!!!
больше неудобно спрашивать уже. последний вопрос.
А как добавить еще один критерий поиска. Например в ячейке с "([a-zа-я]+) Сч. (\d+)" есть слово класс пробел и (\d+)(цифры).... я долго мучался так и не вышло. я добавлял второе условие типо
Код:
Sub denn1812()
    Dim u(), r&, c&, schet, r1&, sh As Worksheet, re As Object, x, h
    u = ActiveSheet.UsedRange.Value
    h = "#'" & Replace$(ActiveSheet.Name, "'", "''") & "'!"  'çàãîòîâêà äëÿ ãèïåðññûëêè
    Set sh = Sheets("Ïëîñêàÿ òàáë")
    r1 = 4                                                   'ñòðîêà, ê êîò. íà÷èíàòü âûâîä
    schet = u(6, 1)
    Set re = CreateObject("vbscript.regexp")
    re.Global = True
    re.ignorecase = True
 
    For r = 19 To UBound(u)                                   'öèêë ïî ñòðîêàì
        If Not IsEmpty(u(r, 1)) Then schet = u(r, 1)
        For c = 6 To UBound(u, 2)
        re.Pattern = "([a-za-я]+) Сч. (\d+)"              'öèêë ïî ñòîëáöàì
            For Each x In re.Execute(u(r, c))
                '      sh.Cells(r1, 4) = Cells(r, c).Address(0, 0)       'ïðîñòîé ââîä àäðåñà ÿ÷åéêè
                sh.Rows(r1).Interior.Color = Cells(r, c).Interior.Color
                sh.Hyperlinks.Add sh.Cells(r1, 4), "", h & Cells(r, c).Address, , Cells(r, c).Address(0, 0)
                sh.Rows(r1).Interior.Color = Cells(r, c).Interior.Color
                sh.Cells(r1, 5) = x.submatches(1)
                sh.Cells(r1, 7) = x.submatches(0)
                sh.Cells(r1, 16) = schet
                sh.Cells(r1, 17) = u(16, c)
                r1 = r1 + 1
          Next
          re.Pattern = "класс (\d+)"
          For Each x In re.Execute(u(r, c))
                '      sh.Cells(r1, 4) = Cells(r, c).Address(0, 0)       'ïðîñòîé ââîä àäðåñà ÿ÷åéêè
                sh.Rows(r1).Interior.Color = Cells(r, c).Interior.Color
                sh.Hyperlinks.Add sh.Cells(r1, 4), "", h & Cells(r, c).Address, , Cells(r, c).Address(0, 0)
                   sh.Rows(r1).Interior.Color = Cells(r, c).Interior.Color
                sh.Cells(r1, 13) = x.submatches(0)
                ' sh.Cells(r1, 7) = x.submatches(0)
                sh.Cells(r1, 16) = schet
                sh.Cells(r1, 17) = u(16, c)
                r1 = r1 + 1
            Next

        Next

    Next
End Sub
но тут что то не то, он класс выводит, но что то другое нет. в общем как то через одно место.
Или такое условие "по виду движения X02, Y02" или по виду движению по виду движения Y14, Y15", нужно что бы X02, Y02 выводил куда ниб

Буду еще раз очень очень признателен если поможете))
denn1812 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
макрос, извлекающий значения из документа *.xml Molotoklk Microsoft Office Excel 13 16.02.2018 22:40
Макрос не распределяет информацию. Ivan_one Microsoft Office Excel 5 12.11.2013 20:42
макрос замены ячеек! azap Microsoft Office Excel 1 30.01.2012 16:53
макрос - подсчитать для каждой строки кол-во ячеек с «+», кол-во ячеек с «-» Vadim_abs Microsoft Office Excel 36 14.07.2009 12:08
в 10-й столбец во все 100 ячеек добавить информацию 1ndigo Microsoft Office Excel 9 03.12.2008 17:57