Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Не получается создать макрос для сортировки информации - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Не получается создать макрос для сортировки информации (Формулы/Formulas)
Не получается создать макрос для сортировки информации
realmen80 Дата: Четверг, 06.04.2017, 18:00 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 7
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
Нужна помощь в решении такой задачи. Есть база в екселе. Вся информация размещена в трех столбцах (А,B,C). Вот так - http://prntscr.com/et74td
В столбце А - указан ID клиента
В столбце B - для каждого ID написаны номера полей. Каждое поле имеет определенный номер за которым закреплен тип информации
В столбце С - указана сама информация

Для каждого клиента в столбце B всегда находится:
под цифрой 2 - его имя
под цифрой 5 - его телефон
под цифрой 6 - его скайп

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

То есть результат работы должен быть такой - http://prntscr.com/et74xu. То есть нужно сохранить ID клиента и для каждого ID сохранить его имя, телефон и скайп.

Информация может быть написана как буквами, цифрами или спицсимволами и количество символов может быть любым. Задача программы - просто перенести все что есть в ячейке.

Заранее благодарен за помощь
К сообщению приложен файл: 9136165.xls (17.0 Kb)
 
Ответить
СообщениеНужна помощь в решении такой задачи. Есть база в екселе. Вся информация размещена в трех столбцах (А,B,C). Вот так - http://prntscr.com/et74td
В столбце А - указан ID клиента
В столбце B - для каждого ID написаны номера полей. Каждое поле имеет определенный номер за которым закреплен тип информации
В столбце С - указана сама информация

Для каждого клиента в столбце B всегда находится:
под цифрой 2 - его имя
под цифрой 5 - его телефон
под цифрой 6 - его скайп

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

То есть результат работы должен быть такой - http://prntscr.com/et74xu. То есть нужно сохранить ID клиента и для каждого ID сохранить его имя, телефон и скайп.

Информация может быть написана как буквами, цифрами или спицсимволами и количество символов может быть любым. Задача программы - просто перенести все что есть в ячейке.

Заранее благодарен за помощь

Автор - realmen80
Дата добавления - 06.04.2017 в 18:00
Karataev Дата: Четверг, 06.04.2017, 19:14 | Сообщение № 2
Группа: Проверенные
Ранг: Старожил
Сообщений: 1334
Репутация: 533 ±
Замечаний: 0% ±

Excel
 
Ответить
Сообщение

Автор - Karataev
Дата добавления - 06.04.2017 в 19:14
Russel Дата: Четверг, 06.04.2017, 19:14 | Сообщение № 3
Группа: Друзья
Ранг: Старожил
Сообщений: 1394
Репутация: 320 ±
Замечаний: 0% ±

Excel 2010
realmen80, далеко не самый изящный метод, но вариант рабочий :-)
К сообщению приложен файл: 4047503.xls (33.0 Kb)


QIWI 9173973973
 
Ответить
Сообщениеrealmen80, далеко не самый изящный метод, но вариант рабочий :-)

Автор - Russel
Дата добавления - 06.04.2017 в 19:14
krosav4ig Дата: Четверг, 06.04.2017, 21:38 | Сообщение № 4
Группа: Друзья
Ранг: Старожил
Сообщений: 2347
Репутация: 989 ±
Замечаний: 0% ±

Excel 2007,2010,2013
Вариант с OLEDB подключением
текст запроса [vba]
Код
select f1 as ID, max(iif(f2=2,f3,null)) as Имя, max(iif(f2=5,f3,null)) as Телефон, max(iif(f2=6,f3,null)) as Skype  FROM `Лист1$` where f1 is not null group by f1
[/vba]
плюс макрос для обновления строки подключения
в модуле Лист1[vba]
Код
Public WithEvents QT As QueryTable
Private Sub qt_BeforeRefresh(Cancel As Boolean)
    QT.Connection = "OLEDB;Provider=Microsoft.ACE.OLEDB.12.0;Mode=Read;Extended " & _
    "Properties=""excel 12.0 macro;HDR=no"";Data Source=" & ThisWorkbook.FullName
End Sub
[/vba]в ЭтаКнига[vba]
Код
Private Sub Workbook_Open()
    Set Лист1.QT = ThisWorkbook.Connections("запрос").Ranges(1).ListObject.QueryTable
End Sub
[/vba]
К сообщению приложен файл: 3736334.xls (41.5 Kb)


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
СообщениеВариант с OLEDB подключением
текст запроса [vba]
Код
select f1 as ID, max(iif(f2=2,f3,null)) as Имя, max(iif(f2=5,f3,null)) as Телефон, max(iif(f2=6,f3,null)) as Skype  FROM `Лист1$` where f1 is not null group by f1
[/vba]
плюс макрос для обновления строки подключения
в модуле Лист1[vba]
Код
Public WithEvents QT As QueryTable
Private Sub qt_BeforeRefresh(Cancel As Boolean)
    QT.Connection = "OLEDB;Provider=Microsoft.ACE.OLEDB.12.0;Mode=Read;Extended " & _
    "Properties=""excel 12.0 macro;HDR=no"";Data Source=" & ThisWorkbook.FullName
End Sub
[/vba]в ЭтаКнига[vba]
Код
Private Sub Workbook_Open()
    Set Лист1.QT = ThisWorkbook.Connections("запрос").Ranges(1).ListObject.QueryTable
End Sub
[/vba]

Автор - krosav4ig
Дата добавления - 06.04.2017 в 21:38
realmen80 Дата: Пятница, 07.04.2017, 10:04 | Сообщение № 5
Группа: Пользователи
Ранг: Прохожий
Сообщений: 7
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
Огромное спасибо за помощь! Вы просто ВОЛШЕБНИКИ!
 
Ответить
СообщениеОгромное спасибо за помощь! Вы просто ВОЛШЕБНИКИ!

Автор - realmen80
Дата добавления - 07.04.2017 в 10:04
Wasilich Дата: Пятница, 07.04.2017, 21:44 | Сообщение № 6
Группа: Друзья
Ранг: Старожил
Сообщений: 1232
Репутация: 326 ±
Замечаний: 0% ±

2003
Меньше букоф. :)
[vba]
Код
Sub www()
  Dim s&, i&, x
  s = 3
  x = Cells(1, "A")
  Application.ScreenUpdating = 0
  For i = 1 To Range("B" & Rows.Count).End(xlUp).Row
    If x = Cells(i, "A") Then
       If Cells(i, "B") = 2 Then Cells(s, "E") = Cells(i, "A"): Cells(s, "F") = Cells(i, "C")
       If Cells(i, "B") = 5 Then Cells(s, "G") = Cells(i, "C")
       If Cells(i, "B") = 6 Then Cells(s, "H") = Cells(i, "C")
    Else
       x = Cells(i, "A"): s = s + 1: i = i - 1
    End If
  Next
  Application.ScreenUpdating = 1
End Sub
[/vba]
 
Ответить
СообщениеМеньше букоф. :)
[vba]
Код
Sub www()
  Dim s&, i&, x
  s = 3
  x = Cells(1, "A")
  Application.ScreenUpdating = 0
  For i = 1 To Range("B" & Rows.Count).End(xlUp).Row
    If x = Cells(i, "A") Then
       If Cells(i, "B") = 2 Then Cells(s, "E") = Cells(i, "A"): Cells(s, "F") = Cells(i, "C")
       If Cells(i, "B") = 5 Then Cells(s, "G") = Cells(i, "C")
       If Cells(i, "B") = 6 Then Cells(s, "H") = Cells(i, "C")
    Else
       x = Cells(i, "A"): s = s + 1: i = i - 1
    End If
  Next
  Application.ScreenUpdating = 1
End Sub
[/vba]

Автор - Wasilich
Дата добавления - 07.04.2017 в 21:44
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Не получается создать макрос для сортировки информации (Формулы/Formulas)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!