Excel это не сложно
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
01.10.2023, 19:02:34

Войти
Интересные и полезные статьи по работе с Excel и VBA можно найти в разделе ХИТРОСТИ
33 121 Сообщений в 5 428 Тем от 6 684 Пользователей
Последний пользователь: RU_bilnik
*
Перейти на сайт Хитрости Надстройка MulTEx Обучающие тренинги Наша группа ВКонтакте
Правила форума Начало Помощь Поиск Календарь Войти Регистрация Выйти
+  Excel это не сложно
|-+  Основные форумы
| |-+  Вопросы по Excel и VBA
| | |-+  КАК сделать оглавление для прайс листа? ГДЕ ОШИБКА
Страниц: [1]   Вниз
Печать
Автор Тема: КАК сделать оглавление для прайс листа? ГДЕ ОШИБКА  (Прочитано 3355 раз)
0 Пользователей и 1 Гость смотрят эту тему.
dredder_gun
Новичок
*

Репутация: +0/-0
Офлайн Офлайн

Сообщений: 3


Просмотр профиля
« : 03.05.2016, 00:14:50 »

Такая задача. Есть прайст лист, в котором много тысяч строчек. Нужно сделать оглавление для него на основе заголовков категории товаров, которые выставлены в столбике С (прикрепил файл с таблицей, там всё видно).

Я решил делать так. Я собрал все заголовки категорий из столбика C, вынес их в отдельный лист и написал макрос, который вставляет ссылки на ячейки этих заголовков.

Макрос выполняет такой алгоритм:
1. Берёт текст каждой ячейки из листа "Содержание
2. Ищет этот текст в столбике С (в котором содержатся заголовки категорий) листа "Прайс лист"
3. В тех ячейках, в которых текст совпал, программа вставляет ссылку. Т.е. в ячейку из "Содержания" вставляется ссылка на подошедшую ячейку из прайс-листа

Вот такой код я состряпал:
Код: (vb)

Sub Find_n_PastLink()
 
    Dim rangContent As Range, rangPrice As Range, oWbk As Excel.Workbook, cell As Range, RecRow
 
    Set PriceSheet = ActiveSheet
    Set ContentSheet = oWbk.Worksheets.Item("Содержание")
    Set rangContent = ContentSheet.Range([A2], Range("A" & Rows.Count).End(xlUp))   
    Set rangPrice = PriceSheet.Range([C11], Range("C" & Rows.Count).End(xlUp))
 
    For CRow = 1 To 360 ' нужно пройтись циклом до конца столбца, не знаю как это сделать, поэтому поставил цифру побольше
       RecRow = rangContent.Cells(A, CRow)
       For PRow = 1 To 17000
          If rangContent.Cells(A, CRow).Text Like rangPrice.Cells(C, PRow).Text
 
          rangContent.Cells(A, CRow).Formula = _
           "=HYPERLINK(""[price 1.1.xls]""&ADDRESS(rangPrice.Cells(C, PRow)), rangPrice.Cells(C, PRow))"
 
          End If
 
       Next PRow
   Next CRow
 
End Sub


Проблема в том, что в VBA я вообще не шарю, в коде наделал ошибок.
Пожалуйста, помогите мне исправить код, чтобы всё работало
Записан
wild_pig
Пользователь
**

Репутация: +5/-0
Офлайн Офлайн

Сообщений: 71


Просмотр профиля
« Ответ #1 : 03.05.2016, 10:05:45 »

Код: (vb)
Sub uuu()
    Dim i&, ii&
    Dim cont As Worksheet, price As Worksheet
'----------------------------------------------
    Set cont = Sheets("Содержание")
    Set price = Sheets("Прайс")
    For i = 1 To cont.Cells(Rows.Count, 1).End(xlUp).Row
        If cont.Cells(i, 1) <> "" Then
            For ii = 1 To price.Cells(Rows.Count, 2).End(xlUp).Row
                If price.Cells(ii, 2) = cont.Cells(i, 1) Then
                    cont.Hyperlinks.Add Anchor:=cont.Cells(i, 1), Address:="", SubAddress:=price.Name & "!" & price.Cells(ii, 2).Address
                End If
            Next
        End If
    Next
    Beep
    MsgBox "Йо-хо-хо!"
End Sub
Записан
vikttur
Глобальный модератор
Ветеран
*****

Репутация: +124/-0
Офлайн Офлайн

Сообщений: 1 816



Просмотр профиля
« Ответ #2 : 03.05.2016, 10:06:11 »

Тема размещена на 4 форумах (может, больше).
http://www.planetaexcel.ru/forum/index.php?PAGE_NAME=read&FID=1&TID=77523&TITLE_SEO=77523-kak-sdelat-oglavlenie-dlya-prays-lista
Записан
dredder_gun
Новичок
*

Репутация: +0/-0
Офлайн Офлайн

Сообщений: 3


Просмотр профиля
« Ответ #3 : 03.05.2016, 22:34:34 »

wild_pig, спасибо тебе за ответ. Это очень большая помощь!

Уже писал на другом форуме, что очень хотел получить ответ, поэтому написал на много форумах. Проистите
Записан
Юрий М
Глобальный модератор
Ветеран
*****

Репутация: +112/-0
Офлайн Офлайн

Сообщений: 2 077



Просмотр профиля E-mail
« Ответ #4 : 03.05.2016, 22:36:11 »

Размещаете тему на нескольких форумах - информируйте об этом ссылками.
Записан
dredder_gun
Новичок
*

Репутация: +0/-0
Офлайн Офлайн

Сообщений: 3


Просмотр профиля
« Ответ #5 : 04.05.2016, 19:40:37 »

Хорошо! Буду теперь иметь ввиду
Записан
Страниц: [1]   Вверх
Печать
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2011, Simple Machines Valid XHTML 1.0! Valid CSS!
Яндекс.Метрика Рейтинг@Mail.ru