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

Вход

Регистрация

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

 

= Мир MS Excel/Поиск значения и вставка со сдвигом - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Поиск значения и вставка со сдвигом
lmln Дата: Четверг, 31.07.2014, 10:32 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Здравствуйте!
Сама суть задачи достаточно простая, но получается очень много условий. Плюс, не могу понять, как будут копироваться объединенные ячейки...
Пожалуйста, помогите с написанием! В программировании кое-что понимаю, но синтаксис VBA не знаю :(
Вот примерный алгоритм (рассмотрен для примера со старта на ячейке А1):
0) ищем на листе 2 по порядку сверху вниз все гиперссылки в столбце A, копируем 1ую из них (потом - вторую и т.д.)
1) ищем скопированное значение на Листе 1
Если есть совпадение:
2) на листе 2 двигаемся на 2 ячейки ниже (А3) и копируем значение до запятой
3) на листе 1 вставляем это значение в ячейку (столбец L, строка в которой нашли значение из п.1)
4) на листе 2 двигаемся на 1 ячейку правее, копируем
5) на листе 1 вставляем это значение в ячейку (столбец S, строка в которой нашли значение из п.1)
6) на листе 2 двигаемся на 1 ячейку правее
6.1) если ячейка объединена - то
6.1.1) скопировать ее и вставить это значение в ячейку листа 1 (столбец X, строка в которой нашли значение из п.1)
6.1.2) вставить это же значение в ячейку листа 1 (столбец Y, строка в которой нашли значение из п.1)
6.1.3) вставить значение "private" в ячейку листа 1 (столбец T, строка в которой нашли значение из п.1)
6.2) если ячейка не объединена - то
6.2.1) скопировать ее и вставить это значение в ячейку листа 1 (столбец X, строка в которой нашли значение из п.1)
6.2.2) переместиться на 4 ячейки ниже, скопировать значение и вставить это значение в ячейку листа 1 (столбец Y, строка в которой нашли значение из п.1)
6.2.3) вставить значение "public" в ячейку листа 1 (столбец T, строка в которой нашли значение из п.1)
7) на листе 2 двигаемся на 1 ячейку правее, копируем
8) на листе 1 вставляем это значение в ячейку (столбец W, строка в которой нашли значение из п.1)
9) на листе 2 двигаемся на 1 ячейку правее, копируем
10) на листе 1 вставляем это значение в ячейку (столбец AA, строка в которой нашли значение из п.1)
11) повторяем к п. 0: переходим к следующей гиперссылке.
К сообщению приложен файл: 1895199.xls (57.0 Kb)
 
Ответить
СообщениеЗдравствуйте!
Сама суть задачи достаточно простая, но получается очень много условий. Плюс, не могу понять, как будут копироваться объединенные ячейки...
Пожалуйста, помогите с написанием! В программировании кое-что понимаю, но синтаксис VBA не знаю :(
Вот примерный алгоритм (рассмотрен для примера со старта на ячейке А1):
0) ищем на листе 2 по порядку сверху вниз все гиперссылки в столбце A, копируем 1ую из них (потом - вторую и т.д.)
1) ищем скопированное значение на Листе 1
Если есть совпадение:
2) на листе 2 двигаемся на 2 ячейки ниже (А3) и копируем значение до запятой
3) на листе 1 вставляем это значение в ячейку (столбец L, строка в которой нашли значение из п.1)
4) на листе 2 двигаемся на 1 ячейку правее, копируем
5) на листе 1 вставляем это значение в ячейку (столбец S, строка в которой нашли значение из п.1)
6) на листе 2 двигаемся на 1 ячейку правее
6.1) если ячейка объединена - то
6.1.1) скопировать ее и вставить это значение в ячейку листа 1 (столбец X, строка в которой нашли значение из п.1)
6.1.2) вставить это же значение в ячейку листа 1 (столбец Y, строка в которой нашли значение из п.1)
6.1.3) вставить значение "private" в ячейку листа 1 (столбец T, строка в которой нашли значение из п.1)
6.2) если ячейка не объединена - то
6.2.1) скопировать ее и вставить это значение в ячейку листа 1 (столбец X, строка в которой нашли значение из п.1)
6.2.2) переместиться на 4 ячейки ниже, скопировать значение и вставить это значение в ячейку листа 1 (столбец Y, строка в которой нашли значение из п.1)
6.2.3) вставить значение "public" в ячейку листа 1 (столбец T, строка в которой нашли значение из п.1)
7) на листе 2 двигаемся на 1 ячейку правее, копируем
8) на листе 1 вставляем это значение в ячейку (столбец W, строка в которой нашли значение из п.1)
9) на листе 2 двигаемся на 1 ячейку правее, копируем
10) на листе 1 вставляем это значение в ячейку (столбец AA, строка в которой нашли значение из п.1)
11) повторяем к п. 0: переходим к следующей гиперссылке.

Автор - lmln
Дата добавления - 31.07.2014 в 10:32
Rioran Дата: Четверг, 31.07.2014, 17:48 | Сообщение № 2
Группа: Авторы
Ранг: Ветеран
Сообщений: 903
Репутация: 290 ±
Замечаний: 0% ±

Excel 2013
lmln, здравствуйте.

Было бы здорово, если бы все пользователи форума так хорошо описывали, чего они хотят.

Задача действительно не самая сложная, но потребует некоторой усидчивости. Если меня никто не перехватит - попробую завтра найти время. В задаче всего два "хитрых" момента - проверка на наличие гиперссылки и проверка на объединённость ячейки. Самое сложное я нашёл и пока просто положу тут до востребования. Если возвращает 0 - ссылок нет.

[vba]
Код
Range("A1").Hyperlinks.Count
[/vba]


Роман, Москва, voronov_rv@mail.ru
Яндекс-Деньги: 41001312674279
 
Ответить
Сообщениеlmln, здравствуйте.

Было бы здорово, если бы все пользователи форума так хорошо описывали, чего они хотят.

Задача действительно не самая сложная, но потребует некоторой усидчивости. Если меня никто не перехватит - попробую завтра найти время. В задаче всего два "хитрых" момента - проверка на наличие гиперссылки и проверка на объединённость ячейки. Самое сложное я нашёл и пока просто положу тут до востребования. Если возвращает 0 - ссылок нет.

[vba]
Код
Range("A1").Hyperlinks.Count
[/vba]

Автор - Rioran
Дата добавления - 31.07.2014 в 17:48
RAN Дата: Четверг, 31.07.2014, 21:48 | Сообщение № 3
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Если меня никто не перехватит

victory victory
В добрый путь!
Я с утра хотел написать, что один раз увидеть... Но отвлекли.
Описано конечно хорошо, спору нет. Как и желания разбираться, что, куда, и как, сравнивая, что есть файле, и что описано на форуме.


Быть или не быть, вот в чем загвоздка!
 
Ответить
Сообщение
Если меня никто не перехватит

victory victory
В добрый путь!
Я с утра хотел написать, что один раз увидеть... Но отвлекли.
Описано конечно хорошо, спору нет. Как и желания разбираться, что, куда, и как, сравнивая, что есть файле, и что описано на форуме.

Автор - RAN
Дата добавления - 31.07.2014 в 21:48
Hugo Дата: Четверг, 31.07.2014, 22:01 | Сообщение № 4
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3255
Репутация: 707 ±
Замечаний: 0% ±

2019
Вообще-то я предпочитаю подробное описание нужного результата, и пример со всеми возможными вариантами исходных данных. А уж как делать - сам продумаю.
Но такое подробное описание тоже может пригодиться, в этой задаче точно иначе не разобраться :)
Кажется похожий файл уже видел, но давно.


excel@nxt.ru
webmoney: E265281470651 Z422237915069
 
Ответить
СообщениеВообще-то я предпочитаю подробное описание нужного результата, и пример со всеми возможными вариантами исходных данных. А уж как делать - сам продумаю.
Но такое подробное описание тоже может пригодиться, в этой задаче точно иначе не разобраться :)
Кажется похожий файл уже видел, но давно.

Автор - Hugo
Дата добавления - 31.07.2014 в 22:01
lmln Дата: Четверг, 31.07.2014, 23:57 | Сообщение № 5
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Спасибо огромное за желание помочь! Очень выручите!
И спасибо что оценили мою работу по составлению алгоритма ))
Очень жду результатов.
 
Ответить
СообщениеСпасибо огромное за желание помочь! Очень выручите!
И спасибо что оценили мою работу по составлению алгоритма ))
Очень жду результатов.

Автор - lmln
Дата добавления - 31.07.2014 в 23:57
Rioran Дата: Пятница, 01.08.2014, 11:44 | Сообщение № 6
Группа: Авторы
Ранг: Ветеран
Сообщений: 903
Репутация: 290 ±
Замечаний: 0% ±

Excel 2013
Алгоритм реализован, код цепляется за листы с названиями "Data" для 1-го листа и "Chest" для второго. Декоративные листы: "Start" - шаблон изначальных данных, "Result" - результат работы макроса. Сочная кнопа с макросом в самом начале, мимо не пройти.

[vba]
Код
Sub Cruel_data_management()

Dim shtX As Worksheet 'For Chest list
Dim strX As String 'For string operations
Dim X As Long 'To run through Chest list
Dim A As Long 'How much rows do we have in Data list
Dim B As Long 'Where is our value on Data list

'Author:    Roman Rioran Voronov
'Date:      the 1-st of August, 2014
'Feedback:  voronov_rv@mail.ru

'Purpose:   Realisation of algorithm for excel-world.ru user
'           http://www.excelworld.ru/forum/10-12229-1#104720

Set shtX = ThisWorkbook.Sheets("Chest")

Application.ScreenUpdating = False
With ThisWorkbook.Sheets("Data")
On Error Resume Next

A = .Cells(.Rows.Count, 1).End(xlUp).Row

For X = 1 To shtX.Cells(shtX.Rows.Count, 1).End(xlUp).Row
     If shtX.Cells(X, 1).Hyperlinks.Count Then
         B = .Range(.Cells(1, 3), .Cells(A, 3)).Find(shtX.Cells(X, 1).Value).Row
         If B > 0 Then
             strX = shtX.Cells(X + 2, 1).Value
             strX = Left(strX, InStr(1, strX, ",", 1) - 1)
             .Cells(B, 12).Value = strX
             .Cells(B, 19).Value = shtX.Cells(X, 2).Value
             .Cells(B, 24).Value = shtX.Cells(X, 3).Value
             If shtX.Cells(X, 3).MergeCells Then
                 .Cells(B, 25).Value = shtX.Cells(X, 3).Value
                 .Cells(B, 20).Value = "private"
             Else
                 .Cells(B, 25).Value = shtX.Cells(X + 4, 3).Value
                 .Cells(B, 20).Value = "public"
             End If
             .Cells(B, 23).Value = shtX.Cells(X, 4).Value
             .Cells(B, 27).Value = shtX.Cells(X, 5).Value
             B = 0
         End If
     End If
Next X

End With
Application.ScreenUpdating = True
End Sub
[/vba]

Интересно, а для каких целей будет использоваться это творение? Содержание интригующе отличается от обычных табелей учёта времени, товара и продаж. Если секрет - можно в личку.
К сообщению приложен файл: Education.xlsm (33.3 Kb)


Роман, Москва, voronov_rv@mail.ru
Яндекс-Деньги: 41001312674279
 
Ответить
СообщениеАлгоритм реализован, код цепляется за листы с названиями "Data" для 1-го листа и "Chest" для второго. Декоративные листы: "Start" - шаблон изначальных данных, "Result" - результат работы макроса. Сочная кнопа с макросом в самом начале, мимо не пройти.

[vba]
Код
Sub Cruel_data_management()

Dim shtX As Worksheet 'For Chest list
Dim strX As String 'For string operations
Dim X As Long 'To run through Chest list
Dim A As Long 'How much rows do we have in Data list
Dim B As Long 'Where is our value on Data list

'Author:    Roman Rioran Voronov
'Date:      the 1-st of August, 2014
'Feedback:  voronov_rv@mail.ru

'Purpose:   Realisation of algorithm for excel-world.ru user
'           http://www.excelworld.ru/forum/10-12229-1#104720

Set shtX = ThisWorkbook.Sheets("Chest")

Application.ScreenUpdating = False
With ThisWorkbook.Sheets("Data")
On Error Resume Next

A = .Cells(.Rows.Count, 1).End(xlUp).Row

For X = 1 To shtX.Cells(shtX.Rows.Count, 1).End(xlUp).Row
     If shtX.Cells(X, 1).Hyperlinks.Count Then
         B = .Range(.Cells(1, 3), .Cells(A, 3)).Find(shtX.Cells(X, 1).Value).Row
         If B > 0 Then
             strX = shtX.Cells(X + 2, 1).Value
             strX = Left(strX, InStr(1, strX, ",", 1) - 1)
             .Cells(B, 12).Value = strX
             .Cells(B, 19).Value = shtX.Cells(X, 2).Value
             .Cells(B, 24).Value = shtX.Cells(X, 3).Value
             If shtX.Cells(X, 3).MergeCells Then
                 .Cells(B, 25).Value = shtX.Cells(X, 3).Value
                 .Cells(B, 20).Value = "private"
             Else
                 .Cells(B, 25).Value = shtX.Cells(X + 4, 3).Value
                 .Cells(B, 20).Value = "public"
             End If
             .Cells(B, 23).Value = shtX.Cells(X, 4).Value
             .Cells(B, 27).Value = shtX.Cells(X, 5).Value
             B = 0
         End If
     End If
Next X

End With
Application.ScreenUpdating = True
End Sub
[/vba]

Интересно, а для каких целей будет использоваться это творение? Содержание интригующе отличается от обычных табелей учёта времени, товара и продаж. Если секрет - можно в личку.

Автор - Rioran
Дата добавления - 01.08.2014 в 11:44
  • Страница 1 из 1
  • 1
Поиск:

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