powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Нужна помощь в макросе
47 сообщений из 47, показаны все 2 страниц
Нужна помощь в макросе
    #37209553
гость110411
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Выложил файл
нужна помощь, суть следующая:
1) макрос ищет в примечаниях инфо из строки 2 "Информация"
2) если такие ячейки находятся, то дается следующее сообщение: 1-я ячейка стобца и значение ячейки, где нашли данные
Сейчас приходится делать руками и смотреть через поиск
Должно получиться:
Проба 516
Разворот 902

Надеюсь на помощь, и надеюсь понятно пояснил
...
Рейтинг: 0 / 0
Нужна помощь в макросе
    #37211242
гость110411
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
смотрю пока никто не помогает, хотя прокомментируйте
реально так или нет
...
Рейтинг: 0 / 0
Нужна помощь в макросе
    #37211270
Papadopulos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Это реально и несложно сделать.
Обращение к ячейке: Sheets("Наименование листа").Cells(номер строки, номер столбца)
Вывод сообщения: MsgBox "Текст сообщения"

А что конкретно ты хочешь, я так до конца и не догнал :)
...
Рейтинг: 0 / 0
Нужна помощь в макросе
    #37211278
гость110411
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Papadopulos,

пояснить уже очень хочется делать макросом, а не руками
...
Рейтинг: 0 / 0
Нужна помощь в макросе
    #37211294
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Создай модуль. Запихни в него функцию:

Public Function GetComment(from As Range) As String
On Error GoTo ErrorHandler
GetComment = from.Comment.Text
Exit Function
ErrorHandler:
Err.Clear
GetComment = ""
End Function
...
Рейтинг: 0 / 0
Нужна помощь в макросе
    #37211299
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Используй функцию (для вывода комментария на лист и) поиска соотв. значения через ГПР()
...
Рейтинг: 0 / 0
Нужна помощь в макросе
    #37211346
гость110411
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina,
я не силен в макросе и формулах, можно поподробнее?
...
Рейтинг: 0 / 0
Нужна помощь в макросе
    #37212213
Papadopulos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
гость110411Papadopulos,

пояснить уже очень хочется делать макросом, а не руками
Нажми кнопку "Запись макроса" в меню "Вид", группа "Макросы" (для E2007). Затем делай руками, то что ты обычно делаешь. Потом нажми кнопку "Остановить запись" и вот у тебя есть готовый макрос.
А вот чтобы его улучшить, все же придется немного VBA изучить
...
Рейтинг: 0 / 0
Нужна помощь в макросе
    #37215959
гость110411
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я так понял
помощи не ждать =(
...
Рейтинг: 0 / 0
Нужна помощь в макросе
    #37216092
NullUzer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
гость110411я так понял
помощи не ждать =(

Объясни на пальцах, что ты хочешь сделать???
...
Рейтинг: 0 / 0
Нужна помощь в макросе
    #37216419
гость110411
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
Нужна помощь в макросе
    #37216445
гость110411
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
суть следующая:

есть таблица
1) в ней 1-я строка - шапка данных, напримен фрукт / овощ
2) 2-я строка - тоже шапка - яблоко / редис
3) после этой шапки идет таблица с 3-й строки, в которой идут данные сумм, в ячейке сумм стоит примечание товара
4) нужен скрипт, который бы показывал инфо, исходя из следующих данных
проверка всей страницы но по столбцам, т.е. проверка идет по стобцу 2, затем 3 и т.д.
если в стобце есть совпадение, значения из строки 2 с примечанием, то выдается сообщение след вида
значение первой строки и значение ячейки из стобца, в которой совпали данные

в примечании может быть много текста, но если встречается значение из строки 2, попадает в сообщение

выложил файл
в Сообщение должно выдать следующее:
фрукт - 1500
фрукт - 1231
овощ - 681
овощ - 599
...
Рейтинг: 0 / 0
Нужна помощь в макросе
    #37216538
NullUzer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
гость110411,

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
Sub OvoschiFrukti()

    Dim i As Integer, j As Integer
    Dim msg As String, sHeader As String
    
    With Sheet1

        For i =  2  To .Range("A2").End(xlToRight).Column

            ' Получаем название овоща/фрукта.
            sHeader = .Cells( 2 , i)

            For j =  3  To .Cells( 3 , i).End(xlDown).Row
                On Error Resume Next 'Если нет каментов
                If .Cells(j, i).Comment.Text = sHeader Then
                    msg = msg & .Cells( 1 , i) & " - " & .Cells(j, i) & vbNewLine
                End If
                On Error GoTo  0 
            Next

        Next

    End With
    
    MsgBox msg

End Sub
...
Рейтинг: 0 / 0
Нужна помощь в макросе
    #37216711
гость110411
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
что-то не получается
сможете вставить в книгу скрипт?
...
Рейтинг: 0 / 0
Нужна помощь в макросе
    #37216773
NullUzer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
гость110411,

Там я сделал ссылку на Sheet1 - это программное имя листа "Лист1". У меня просто офис английский. Вместо Sheeе1 поставь Лист1 .
Можно и без программного имени с условием, что активным листом будет лист с овощами.

Овощи + Фрукты
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
Sub OvoschiFrukti()

    Dim i As Integer, j As Integer
    Dim msg As String, sHeader As String
    
        For i =  2  To Range("A2").End(xlToRight).Column

            ' Получаем название овоща/фрукта.
            sHeader = Cells( 2 , i)

            For j =  3  To Cells( 3 , i).End(xlDown).Row
                On Error Resume Next 'Если нет каментов
                If Cells(j, i).Comment.Text = sHeader Then
                    msg = msg & Cells( 1 , i) & " - " & Cells(j, i) & vbNewLine
                End If
                On Error GoTo  0 
            Next

        Next
    
    MsgBox msg

End Sub
...
Рейтинг: 0 / 0
Нужна помощь в макросе
    #37216830
NullUzer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
NullUzer,

Всё поправил! Работает! Дело в том, что в каментах может быть не одно значение, а несколько, поэтому задействовал оператор Like. :)

Овощи/Фрукты
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
Sub OvoschiFrukti()

    Dim i As Integer, j As Integer
    Dim msg As String, sHeader As String
    
    For i =  2  To Range("A2").End(xlToRight).Column

        ' Получаем название овоща/фрукта.

        sHeader = Cells( 2 , i)

        For j =  3  To Cells( 3 , i).End(xlDown).Row

            On Error Resume Next
            If Cells(j, i).Comment.Text Like "*" & sHeader & "*" Then
                msg = msg & Cells( 1 , i) & " - " & Cells(j, i) & vbNewLine
            End If

            On Error GoTo  0 

        Next

    Next

    MsgBox msg

End Sub
...
Рейтинг: 0 / 0
Нужна помощь в макросе
    #37216833
гость110411
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
NullUzer,

супер увидел, тока один нюанс
данный скрипт не вытащил значения
фрукт - 1231
овощ - 599

-----------

из файла,
фрукт - 1231 его примечание:
яблоко
ананас

из файла, т.к
овощ - 599 его примечание:
картофель
редис

-----------

т.е. если другие значения есть, он не понимает
реально сделать, чтобы вытащил?
...
Рейтинг: 0 / 0
Нужна помощь в макросе
    #37216835
NullUzer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
гость110411,

Вот макрос в твоём файле.
...
Рейтинг: 0 / 0
Нужна помощь в макросе
    #37216856
гость110411
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
NullUzer,

спасибо
что нужно
...
Рейтинг: 0 / 0
Нужна помощь в макросе
    #37216982
гость110411
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
NullUzer,

вопрос возник
если ячейки для поиска смещаются
как изменить?
...
Рейтинг: 0 / 0
Нужна помощь в макросе
    #37216987
гость110411
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
например так
файл приложил
что в макросе надо изменять
...
Рейтинг: 0 / 0
Нужна помощь в макросе
    #37217730
NullUzer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
гость110411например так
файл приложил
что в макросе надо изменять

После недолгих мучений пишу тебе универсальны код. Важно условие - перед выполнением выделить диапазон с данными.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
Attribute VB_Name = "Module1"
Option Explicit

Sub OvoschiFrukti()

    Dim rng As Range
    Dim iRowGroup As Integer, iRowSpec As Integer
    Dim iColGroup As Integer, iColSpec As Integer
    Dim i As Integer, j As Integer
    Dim msg As String, sHeader As String
    
    If TypeName(Selection) <> "Range" Then
        MsgBox "Выделите ячейки!", vbCritical, "Ошибка"
        Exit Sub
    End If
    
    Set rng = Selection
    
    With rng.Columns( 1 ).Find(What:="Группа")
        iRowGroup = .Row
        iColGroup = .Column
    End With
    
    With rng.Columns( 1 ).Find(What:="Специфика")
        iRowSpec = .Row
        iColSpec = .Column
    End With
    
    Debug.Print iRowGroup, iColGroup, iRowSpec, iColSpec
    
    For i = iColSpec +  1  To Cells(iRowSpec, iColSpec).End(xlToRight).Column
        
        ' Получаем название фрукта/овоща.
        sHeader = Cells(iRowSpec, i)
        
        For j = iRowSpec +  1  To Cells(iRowSpec, i).End(xlDown).Row
            On Error Resume Next
            If Cells(j, i).Comment.Text Like "*" & sHeader & "*" Then
                msg = msg & Cells(iRowGroup, i) & " - " & Cells(j, i) & vbNewLine
            End If
            On Error GoTo  0 
        Next
    Next

    MsgBox msg

End Sub
...
Рейтинг: 0 / 0
Нужна помощь в макросе
    #37218144
гость110411
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
NullUzer,

если не сложно вставь пожалуйста в файл
...
Рейтинг: 0 / 0
Нужна помощь в макросе
    #37218181
NullUzer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
гость110411NullUzer,

если не сложно вставь пожалуйста в файл
Но проблемо!
...
Рейтинг: 0 / 0
Нужна помощь в макросе
    #37218807
гость110411
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
NullUzer,

вот блин, всё сразу и не учтешь
если у ячейки нет значения и коммента, то не работает
файл приложил
...
Рейтинг: 0 / 0
Нужна помощь в макросе
    #37219028
гость110411
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
гость110411NullUzer,

вот блин, всё сразу и не учтешь
если у ячейки нет значения и коммента, то не работает
файл приложил

т.е. и/или может пустая ячейка, пустая с комментном, заполненная без коммента
...
Рейтинг: 0 / 0
Нужна помощь в макросе
    #37220898
NullUzer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
гость110411гость110411NullUzer,

вот блин, всё сразу и не учтешь
если у ячейки нет значения и коммента, то не работает
файл приложил

т.е. и/или может пустая ячейка, пустая с комментном, заполненная без коммента

Почему не работает???? On Error Resume Next как раз и отсекает такие случаи. Проблема в том, что ты невнимательно читал, что я написал, а именно - "Важно условие - перед выполнением выделить диапазон с данными" .

Прикрепляю тебе файло. Открой и нажми на кнопку.
...
Рейтинг: 0 / 0
Нужна помощь в макросе
    #37221057
гость110411
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
NullUzer,

в Сообщение должно выдать следующее:
фрукт - 1500
фрукт - 1231
фрукт - 302
овощ - 681
овощ - 599

а выдает

фрукт - 1500
фрукт - 1231
овощ -
овощ - 681
...
Рейтинг: 0 / 0
Нужна помощь в макросе
    #37221114
NullUzer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
гость110411,

Лови :)
...
Рейтинг: 0 / 0
Нужна помощь в макросе
    #37221306
гость110411
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
NullUzer,

спасибо, вроде работает как надо =)
...
Рейтинг: 0 / 0
Нужна помощь в макросе
    #37221308
NullUzer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
гость110411,

Ты б сразу с такими сложностями написал. :) Ради интереса: кто ж будет эти каменты забивать? :)
...
Рейтинг: 0 / 0
Нужна помощь в макросе
    #37221587
гость110411
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
NullUzer,

еще проблемка
...
Рейтинг: 0 / 0
Нужна помощь в макросе
    #37221589
гость110411
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
NullUzer,

если есть данные в ячейке, а нет коммента, то попадает в сообщение
...
Рейтинг: 0 / 0
Нужна помощь в макросе
    #37221593
гость110411
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вот файл
...
Рейтинг: 0 / 0
Нужна помощь в макросе
    #37221594
гость110411
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вот
...
Рейтинг: 0 / 0
Нужна помощь в макросе
    #37221787
NullUzer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
гость110411,

Всё подправил. Теперь проверка будет происходит в том случае, если ячейка непуста И имеет комментарий. :)
...
Рейтинг: 0 / 0
Нужна помощь в макросе
    #37222093
гость110411
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
NullUzer,

супер спс
вопрос в макросе увидел

Код: plaintext
1.
2.
3.
4.
    If TypeName(Selection) <> "Range" Then
        MsgBox "Âûäåëèòå ÿ÷åéêè!", vbCritical, "Îøèáêà"
        Exit Sub
    End If

если типо я не выделил нужный диапозон, ругается, так?
но не работает =)
...
Рейтинг: 0 / 0
Нужна помощь в макросе
    #37222217
NullUzer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
гость110411NullUzer,

супер спс
вопрос в макросе увидел

Код: plaintext
1.
2.
3.
4.
    If TypeName(Selection) <> "Range" Then
        MsgBox "Âûäåëèòå ÿ÷åéêè!", vbCritical, "Îøèáêà"
        Exit Sub
    End If

если типо я не выделил нужный диапозон, ругается, так?
но не работает =)

Да, хорошо, что напомнил. Действительно, эта проверка спасёт от ошибки, если ты, например, выделил диаграмму или шэйп. :)
Более правильней для твоего случая будет добавочная проверка левой верхней ячейки на слово "Группа". Лови!

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
Attribute VB_Name = "Module1"
Option Explicit

Sub OvoschiFrukti()

    Dim rng As Range
    Dim iRowGroup As Integer, iRowSpec As Integer
    Dim iColGroup As Integer, iColSpec As Integer
    Dim i As Integer, j As Integer, lastRow As Long
    Dim msg As String, sHeader As String
    
    If TypeName(Selection) <> "Range" Then
        MsgBox "Выделите ячейки!", vbCritical, "Ошибка"
        Exit Sub
    End If
    
    Set rng = Selection
    
    If rng.Cells( 1 ) <> "Группа" Then
        MsgBox "Выделен неверный диапазон!", vbCritical, "Ошибка"
        Exit Sub
    End If
    
    With rng.Columns( 1 ).Find(What:="Группа")
        iRowGroup = .Row
        iColGroup = .Column
    End With
    
    With rng.Columns( 1 ).Find(What:="Специфика")
        iRowSpec = .Row
        iColSpec = .Column
    End With
    
    lastRow = iRowGroup + rng.Rows.Count -  1 

    For i = iColSpec +  1  To Cells(iRowSpec, iColSpec).End(xlToRight).Column
        
        ' Получаем название фрукта/овоща.
        sHeader = Cells(iRowSpec, i)
        
        For j = iRowSpec +  1  To lastRow
            If (Not IsEmpty(Cells(j, i))) And (Not Cells(j, i).Comment Is Nothing) Then
                On Error Resume Next
                If Cells(j, i).Comment.Text Like "*" & sHeader & "*" Then
                    msg = msg & Cells(iRowGroup, i) & " - " & Cells(j, i) & vbNewLine
                End If
                On Error GoTo  0 
            End If
        Next
    Next

    MsgBox msg

End Sub
...
Рейтинг: 0 / 0
Нужна помощь в макросе
    #37222228
гость110411
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
NullUzer,

спасибо надеюсь на этом всё
...
Рейтинг: 0 / 0
Нужна помощь в макросе
    #37222251
NullUzer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
гость110411,

Блин, случайно выложил неверный код (на форуме). Верный код - в файле. :)
...
Рейтинг: 0 / 0
Нужна помощь в макросе
    #37222255
NullUzer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
гость110411,

Блин, на форуме - верный код.
...
Рейтинг: 0 / 0
Нужна помощь в макросе
    #37222330
гость110411
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
NullUzer,

т.е. и в файле правильный и на форуме =)))
...
Рейтинг: 0 / 0
Нужна помощь в макросе
    #37222357
NullUzer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
гость110411NullUzer,

т.е. и в файле правильный и на форуме =)))
ага
...
Рейтинг: 0 / 0
Нужна помощь в макросе
    #37237760
гость110411
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
NullUzer,

а реально сделать в ячейке, по которой ищем, не одно слово, а не сколько
например, чтобы проверял в примечаниях ячеек, банан и яблоко
аля такого
...
Рейтинг: 0 / 0
Нужна помощь в макросе
    #37237816
NullUzer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Готово! :-)
...
Рейтинг: 0 / 0
Нужна помощь в макросе
    #37237821
NullUzer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, забыл уточнить - названия фруктов/овощей должны быть строго через пробел! :)
...
Рейтинг: 0 / 0
Нужна помощь в макросе
    #37238767
гость110411
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
NullUzer,

понял, спасибо
...
Рейтинг: 0 / 0
47 сообщений из 47, показаны все 2 страниц
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Нужна помощь в макросе
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]