Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.76/55: Рейтинг темы: голосов - 55, средняя оценка - 4.76
77 / 11 / 0
Регистрация: 28.03.2018
Сообщений: 828

Сравнение строк

07.06.2018, 09:43. Показов 11635. Ответов 48
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ребят, немогу сравнить строку с строкой. Подскажите как можно....Макрос или стандартные функции эксель.во вложении файл. сравнить строку первой вкладки со строкой в шаблоне (вкладка "шаблон")......Т.е. какому классу сообветствуют строки первой вкладки. Спасибо
Вложения
Тип файла: zip пример.zip (150.5 Кб, 33 просмотров)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
07.06.2018, 09:43
Ответы с готовыми решениями:

Сравнение строк в нескольких файлах excel, копирование несовпадающих строк и их вывод в сводный файл
Добрый день, только только начал разбираться с VBA в excel, поэтому прошу помощи (схожие темы находил, но не смог преобразовать их...

Сравнение строк
в Excel нужно сравнить строки так: For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row L = CStr(Cells(i, 1).Value) For j = i + 1 To...

Сравнение строк в Excel
Всем привет! Столкнулся с задачей, достаточно интересной, но в виду отсутствия у меня опыта работы со строками, очень для меня непростой....

48
77 / 11 / 0
Регистрация: 28.03.2018
Сообщений: 828
16.07.2018, 19:55  [ТС]
Студворк — интернет-сервис помощи студентам
Burk, процедура сравнивает таблицу с шаблоном и определяет какому классу соответствуют строки. Не знаю как доработать и дописать чем
FMatrix = ...

мы разбирали уже это и Вы в # 25 написали свой вариант....функцию написать хочу. Чтобы диапазоны менять можно было
Вложения
Тип файла: zip FMatrix.zip (167.2 Кб, 6 просмотров)
0
1847 / 1162 / 354
Регистрация: 11.07.2014
Сообщений: 4,107
17.07.2018, 08:59
mor_sergey, вы так и не ответили на вопрос, что должна возвращать функция. И нужна ли она вообще. Можно просто использовать процедуру с параметрами. Ну или убрать из параметров Results, а функции присвоить столбец классов.
Создал свой модуль2 в вашем файле. Создал свою процедуру с параметрами, как у вас на основе макроса, который я писал раньше. И макрос для запуска (пример по вашим данным) процедуры - Proba. Запустите его, получите результат. Проверял совпадение, как и раньше, по плюсику, ваши жёлто-зелёные цвета не рассматривал
Вложения
Тип файла: rar FMatrix.rar (161.9 Кб, 5 просмотров)
1
77 / 11 / 0
Регистрация: 28.03.2018
Сообщений: 828
17.07.2018, 12:39  [ТС]
Burk, Вы правы, конечно, вместо Results я вставил название функции....но теперь ссылается на ByRef и выделяет I.
а функцию хочу, потому что подобных таблиц много и диапазоны будут разные.

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Function Matri(Shablon As Range, Table As Range) As Range
Dim I As Integer, J As Integer, LastShab As Integer, LastTab As Integer
Dim K As Integer, TF As Boolean
LastShab = Shablon.Rows.Count
LastTab = Table.Rows.Count
  For I = 1 To LastTab
    For J = 1 To LastShab
      TF = True
      For K = 1 To 8
        If Table(I, K) <> Shablon(J, K + 2) Then TF = False: Exit For
      Next
      If TF Then Exit For
    Next
    If TF Then 
     ' Cells(I, 10) = J 
      Do While Shablon(J, 1) = ""
        J = J - 1
      Loop
      Matri(I) = Shablon(J, 1)
    End If
  Next
End Function
0
1847 / 1162 / 354
Регистрация: 11.07.2014
Сообщений: 4,107
17.07.2018, 13:50
Цитата Сообщение от mor_sergey Посмотреть сообщение
потому что подобных таблиц много
Я же написал вам пример обращения к процедуре и пишите подобное обращение с разными диапазонами, что к процедуре, что к функции. Но, чувствую, вам безнадежно всё это объяснять, не исключено, что вы занимаетесь не своим делом. Прекращаю участвовать в ваших темах. Удачи вам

Добавлено через 44 минуты
Visual Basic
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
Function BurkMatrF(Shablon As Range, Table As Range)
Dim I As Integer, J As Integer, LastShab As Integer, LastTab As Integer
Dim K As Integer, TF As Boolean, Results()
LastShab = Shablon.Rows.Count
LastTab = Table.Rows.Count
ReDim Results(1 To LastTab, 1 To 1)
  For I = 1 To LastTab
    For J = 1 To LastShab
      TF = True
      For K = 1 To 8
        If Table(I, K) <> Shablon(J, K + 2) Then TF = False: Exit For
      Next
      If TF Then Exit For
    Next
    If TF Then 'нашли совпадение
     ' Cells(I, 10) = J 'номер строки в шаблоне, с которым совпадение
      Do While Shablon(J, 1) = ""
        J = J - 1
      Loop
      Results(I, 1) = Shablon(J, 1)
'      MsgBox Results(I)
    End If
  Next
BurkMatrF = Results
End Function
Sub Proba()
Sheets("Сравнить").Range("L7:L30") = BurkMatrF(Sheets("Шаблон").Range("A9:J41"), _
              Sheets("Сравнить").Range("C7:J30"))
End Sub
1
77 / 11 / 0
Регистрация: 28.03.2018
Сообщений: 828
17.07.2018, 14:49  [ТС]
Burk, Функция работает....но почему-то криво немного... Посмотрите пожалуйста. одно и то же сделано процедурой и функцией с листа
Вложения
Тип файла: zip FMatrix (2).zip (167.7 Кб, 8 просмотров)
0
77 / 11 / 0
Регистрация: 28.03.2018
Сообщений: 828
17.07.2018, 14:54  [ТС]
Burk, Burk, вопрос снят. дело в фиксации ссылки. таблицу с шаблоном заморозить нужно было
0
1847 / 1162 / 354
Регистрация: 11.07.2014
Сообщений: 4,107
17.07.2018, 15:04
Лучший ответ Сообщение было отмечено mor_sergey как решение

Решение

mor_sergey, ещё раз посылаю свои два файла с процедурой и функцией, считают одинаково. Может что-то меняли, но проверять ваши изменения не буду.
Вложения
Тип файла: rar FMatrix2.rar (324.4 Кб, 9 просмотров)
1
77 / 11 / 0
Регистрация: 28.03.2018
Сообщений: 828
17.07.2018, 15:33  [ТС]
Burk, ввел переменную Col = Table.Columns.Count на случай если столбцов не 8. Все же без фиксации(F4) не получается...можно это в коде прописать прямо? Простите за нахальство. Надоел до ужаса. Понимаю
0
1847 / 1162 / 354
Регистрация: 11.07.2014
Сообщений: 4,107
18.07.2018, 07:48
Цитата Сообщение от mor_sergey Посмотреть сообщение
Все же без фиксации(F4) не получается
я не знаю что такое фиксация и до сих пор выражение вашей мысли в сообщениях выше уровня моего интеллекта. Может научитесь писать по-русски?

Добавлено через 10 минут
Моя программа работает без какой-либо фиксации

Добавлено через 12 часов 22 минуты
mor_sergey, всё-таки посмотрел какую хрень вы наделали! Функция вычисляет класс не одной строки, а всей таблицы в целом! А вы записываете обращение к ней в каждой строке с переменным диапазоном таблицы. Я скоро начну употреблять не нормативную лексику, отвечая на ваши очередные неадекватные выдумки и меня выгонят с форума. Таблица шаблона находится на одном месте, почему же в обращении к функции её местоположение Range <скользит>???
Можно воспользоваться и моей функцией для одной строки из Table, но тогда обращение будет выглядеть так (для примера):
Visual Basic
1
2
3
4
вместо
=BurkMatrF(Шаблон!A16:J48;C14:J37)
надо
=BurkMatrF(Шаблон!C9:J41;C14:J14)
Либо переделать функцию под одну строку.
Да и параметр Shablon в функции лучше убрать, если не будет нескольких шаблонов (а их наверняка не будет). Просто в функции указать истинное расположение таблицы шаблона
И почему таблица шаблона указывается с А смотрите мои сабы Proba

Добавлено через 6 минут
Последнее замечание снимается, не посмотрел, должно быть так
Visual Basic
1
=BurkMatrF(Шаблон!A9:J41;C14:J14)
Добавлено через 1 час 52 минуты
Последнее

Добавлено через 6 минут
mor_sergey, если хотите использовать как функцию на листе, то проще записать так для одной строки
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Function BurkMatrOne(Table As Range)
Dim J As Integer, LastShab As Integer, LastTab As Integer
Dim K As Integer, TF As Boolean, Shablon As Range
Set Shablon = Sheets("Шаблон").Range("A9:J41")
LastShab = Shablon.Rows.Count
BurkMatrOne = ""
    For J = 1 To LastShab
      TF = True
      For K = 1 To 8
        If Table(1, K) <> Shablon(J, K + 2) Then TF = False: Exit For
      Next
      If TF Then Exit For
    Next
    If TF Then 'нашли совпадение
      Do While Shablon(J, 1) = ""
        J = J - 1
      Loop
      BurkMatrOne = Shablon(J, 1)
    End If
End Function
и в ячейку поставить обращение (для 14-ой строки) =BurkMatrOne(C14:J14)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.07.2018, 07:48

Сравнение строк в Excel
Проблема такая. Имею 3 файла: 1) Список сформированый из 1с; 2) Список сформированый в какой-то старой 1-се и редактировался в опен офисе;...

Сравнение строк содержащих число
Есть строки содержащие 12-значные целые числа (например 713373013410). насколько я понимаю в VBA нет встроенного формата для чисел таких...

Сравнение строк с учетом регистра
Подскажите, как в VBA сделать с учетом регистра? В коде у меня идет сравнение 2 ух переменных

Сравнение строк в Excel на совпадение
Смысл такой: Товар на складе до ревизии Смысл такой: Товар на складе до ревизии Наименование Кол-во Цена Сумма Молоко 1 ...

Поиск строк и сравнение периодов
Здравствуйте. Нужно решение. Понимаю не спортивно, но у самого не получается. Есть таблица: в первом столбике адреса, во втором...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
49
Ответ Создать тему
Новые блоги и статьи
Генератор паролей (вариант №4)
Maks 01.11.2026
После публикации 3-го варианта генератора паролей, разослал его своим коллегам (с целью оценки), в итоге были получены следующие рекомендации: 1. Вернуть возможность использования знаков | 1 l I;. . .
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С. Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию? Фраза «Любая достаточно развитая технология неотличима от магии». . .
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль? Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология. «Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
Генератор паролей (вариант №2)
Maks 30.10.2026
Обновленная версия ранее созданной обработки. Добавлены следующие реквизиты типа Булево: - Буквы; - Цифры; - Символы. Изменена логика команды "Сгенерировать" и процедуры "ПриОткрытии":. . .
Генератор паролей (вариант №1)
Maks 29.10.2026
Реализация из решения ниже выполнена исключительно по моей инициативе, дабы облегчить себе работу в создании паролей для администрируемых мною сервисов и пользователей. Самым главным критерием для. . .
Установка ChatGPT (Codex) на Windows без использования Microsoft Store
Fabien159 28.10.2026
Здравствуйте всем читающим! Опишу процесс установки ChatGPT (Codex) на Windows, если по каким-то причинам у вас не получается устанавить его через Microsoft Store. И так: 1. Скачиваем с. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru