Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
0 / 0 / 0
Регистрация: 25.05.2021
Сообщений: 4
Excel

Макрос на сопоставление данных из одной ячейки на данные второй ячейки

25.05.2021, 12:37. Показов 2759. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день!
У меня возникла сложность с выполнением данной задачи:
В Excel есть две ячейки с числовыми данными, например:
первая ячейка: вторая ячейка:
"08.01, "60.01,
08.02" 60.21,
60.31"
Мне надо, чтобы с помощью макроса в MS Excel выполнялось следующее действие:
1. Надо сопоставить данные из первой ячейке на данное во второй ячейке
08.01 = 60.01; 08.01 = 60.21; 08.01 = 60.31; 08.02 = 60.01; 08.02 = 60.21; 08.02 = 60.31;
2. После того, как произошло сопоставление данных, макрос должен создать 6 строчек в таблице Excel примером пункта 1.
Более подробное описание действий я прикрепил вложение формата MS Excel.
Вложения
Тип файла: xlsx Сопоставление.xlsx (9.8 Кб, 14 просмотров)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.05.2021, 12:37
Ответы с готовыми решениями:

Перенос данных одной ячейки в ячейки другого листа с заданным интервалом
Добрый день! Нужна помощь в автоматизации создания списка по ТОиТР оборудования. Имеется файл с тремя листами. Первый "Перечень...

Из одной ячейки на одном листе раскидать данные в другие ячейки в другом листе
Помогите пожалуйста! Экстренная ситуация, вплоть до увольнения:( Надо из одной ячейки на одном листе раскидать данные в другие ячейки в...

Откорректировать макрос так, чтобы поиск осуществлялся не с ячейки А1, а с ячейки C21
Как в этом макросе прописать, чтобы поиск осуществлялся в столбике "С", но с 21-ой строки? Sub asd() Dim c As Range Set c =...

10
859 / 509 / 187
Регистрация: 09.03.2009
Сообщений: 1,722
25.05.2021, 12:47
Вам надо разобрать ячейку D и затем повторить ее столько раз, сколько там частей, во внешнем цикле. Во внутреннем разобрать ячейку E и повторить ее. Если так, то ничего сложного нет.
0
0 / 0 / 0
Регистрация: 25.05.2021
Сообщений: 4
25.05.2021, 13:01  [ТС]
Zeag, честно, я даже не знаю как это сделать
Вы не сможете помочь?
0
859 / 509 / 187
Регистрация: 09.03.2009
Сообщений: 1,722
25.05.2021, 13:03
Смогу, но где-то через часик, сейчас работаю. Подождете?
0
0 / 0 / 0
Регистрация: 25.05.2021
Сообщений: 4
25.05.2021, 13:10  [ТС]
Zeag, да, конечно подожду, спасибо!
0
859 / 509 / 187
Регистрация: 09.03.2009
Сообщений: 1,722
25.05.2021, 13:56
Как выглядит полный файл? Нужно вставлять записи при размножении (за исходной идут такие же) или одна запись и можно просто ниже размножать? Исходная строка удаляется?
0
 Аватар для Narimanych
2751 / 1725 / 779
Регистрация: 23.03.2015
Сообщений: 5,449
25.05.2021, 14:01
SVSPRO,

Привет, если строк немного, то попробуйте код на копии вашего файла
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Sub MMM()
Application.ScreenUpdating = False
LR = Cells(Rows.Count, 3).End(xlUp).Row
 For i = LR To 7 Step -1
    For j = i - 1 To 7 Step -1
        If Cells(i, 3) = Cells(j, 3) And Cells(i, 6) = Cells(j, 6) And Cells(i, 7) = Cells(j, 7) And Cells(i, 8) = Cells(j, 8) And Cells(i, 9) = Cells(j, 9) Then
            If InStr(Cells(i, 4).Value, Cells(j, 4).Value) = 0 Then Cells(i, 4).Value = Cells(i, 4).Value & "," & Chr(10) & Cells(j, 4).Value
             If InStr(Cells(i, 5).Value, Cells(j, 5).Value) = 0 Then Cells(i, 5).Value = Cells(i, 5).Value & "," & Chr(10) & Cells(j, 5).Value
            Cells(j, 4) = Cells(i, 4)
            Cells(j, 5) = Cells(i, 5)
           Rows(i).Delete
           Exit For
         End If
        
    Next
 Next
 Application.ScreenUpdating = True
 
End Sub
1
Часто онлайн
 Аватар для КостяФедореев
987 / 637 / 280
Регистрация: 09.01.2017
Сообщений: 2,080
25.05.2021, 14:07
SVSPRO, как вариант
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Public Sub www()
Application.ScreenUpdating = False
    Dim arr()       As Variant
    a = UBound(Split(Cells(7, 4), ",")) + 1
    b = UBound(Split(Cells(7, 5), ",")) + 1
    ReDim arr(1 To a * b, 1 To 2)
    For i = 1 To a
        For j = 1 To b
            n = n + 1
            arr(n, 1) = Split(Cells(7, 4), ",")(i - 1)
            arr(n, 2) = Split(Cells(7, 5), ",")(j - 1)
        Next
    Next
    Range(Cells(7, 2), Cells(7, 9)).Copy _
            Destination:=Range(Cells(9, 2), Cells(8 + a * b, 9))
    Cells(9, 4).Resize(a * b, 2) = arr
    Application.ScreenUpdating = True
End Sub
Добавлено через 31 секунду
о, как пока писал уже ответили...
1
859 / 509 / 187
Регистрация: 09.03.2009
Сообщений: 1,722
25.05.2021, 14:10
Лучший ответ Сообщение было отмечено SVSPRO как решение

Решение

И мой вариант...
Вложения
Тип файла: 7z sop.7z (15.0 Кб, 14 просмотров)
0
0 / 0 / 0
Регистрация: 25.05.2021
Сообщений: 4
25.05.2021, 14:53  [ТС]
Zeag, спасибо огромное!!!
Ваш вариант отработал как надо.
Т.к. в моем файле мэппинга более 2 тысяч строк, вручную это делать unreal. Ещё надо сопоставлять дубли и у удалять их.
Но самое главное Вы сделали, спасибо!
Как я могу Вас отблагодарить?
0
859 / 509 / 187
Регистрация: 09.03.2009
Сообщений: 1,722
25.05.2021, 15:11
Лучший ответ Сообщение было отмечено SVSPRO как решение

Решение

Дубли можно удалять через "Данные - Удалить дубликаты", если это подходит.
Ну, мы ж не во фриланс-разделе )), хотя я есть на паре других сайтов. Так что кнопочкой справа тут...

Добавлено через 52 секунды
Да, и добавьте для ускорения эту процедуру и ее вызов с True до и False после исполнения.
Visual Basic
1
2
3
4
5
6
7
8
9
10
Private Sub Accelerate_Excel(bFlag As Boolean)
   With Application
      .ScreenUpdating = Not bFlag
      .Calculation = IIf(Not bFlag, xlCalculationAutomatic, xlCalculationManual)
      .EnableEvents = Not bFlag
      'If Workbooks.Count Then ActiveWorkbook.ActiveSheet.DisplayPageBreaks = Not bFlag
'      .DisplayStatusBar = Not bFlag
      .DisplayAlerts = Not bFlag
   End With
End Sub
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.05.2021, 15:11
Помогаю со студенческими работами здесь

Макрос, который увеличивает значение ячейки А на 1 при изменении ячейки В
Добрый день. Я написал макрос, который увеличивает значение ячейки А на 1 при изменении ячейки В, но почему то значение изменяется...

Связывание данных, чтоб при выборе подстановки из одной ячейки,программа сама вставляла данные в другую
Всем приятного времени суток.В одну таблицу вставляю 2 поля из другой - подстановками, но мне нужно чтоб при выборе одного, автоматически...

Макрос: Поиск совпадений, перенос совпавшей ячейки и рядом с ней стоящей ячейки
Доброго времени суток ! Прошу помощи с написанием макроса, очень очень очень выручите! Задача такова 1 - есть книга из 3х листов ( 1...

Макрос соотношения информации в одной ячейки к другой
Есть таблица. имя документа меняется. *.xls ДАТА РЕЙС РЕГ ВС АРВ НАЗВАНИЕ ДАТА И ВРЕМЯ АРП НАЗВАНИЕ инф 100 инф инф инф инф инф инф ...

Excel. Макрос на суммирование значений одной ячейки
Здравствуйте. Очень нужна помощь. Необходимо, сделать макрос на суммирование значений в одной ячейке, у меня есть диапазон ячеек...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru