New, а как быть со сравнением двух столбцов (Вид ОМС(первый лист) и Код вида лечения(второй лист)), тобишь берем человека у которого только по одной записи в каждом листе, нужно сравнить эти два столбца(чтоб значения до нижнего подчеркивания были одинаковые) каким способом это можно сделать?
объясню. для удобства фильтрации таблицы на листе Excel компания Microsoft придумала инструмент под названием Автофильтр (в быту просто Фильтр). Допустим у вас есть большая таблица - как у вас на листе Page1 и ваша задача отфильтровать её оставив только людей, у которых регион страхования "г.Москва". для этого вам нужно (если на листе ещё не установлен Автофильтр) 1. Выделить всю таблицу начиная с шапки (то есть начиная от ячейка А1 до конца вниз вправо, ячейка AB230) 2. далее меню Данные - Фильтр (в блоке Сортировка и Фильтр) В шапке таблицы во всех столбцах появится значок фильтра (внизу справа ячейки) Теперь вы можете устанавливать фильтры в каждом столбце вашей таблицы. При установке фильтра - все строки, которые не подошли под ваше условие будут скрываться! Установите фильтр в столбце G - г.Москва - часть строк останется видна, часть скроются. Чтобы снять Фильтр - можно, как я уже показал выше в своих сообщениях, нажать на значок фильтра в шапке таблицы (ячейка G1) и выбрать "Выделить все" или Удалить фильтр из столбца. Если вы установили фильтр на много столбцов сразу и хотите снять все фильтры со всех листов, то меню Данные - Очистить (в блоке сортировка и фильтр)
если просто ответить на ваш вопрос - как это сделать, то ответ - циклами. Как вы проверяете на задвоения. Тут надо писать логику работы макроса (кода). Если коды совпадают, то что делаем? А если отличаются, то что делаем?
то что циклами это понятно, коды просто выглядят совсем по разному в первом листе как пример вот так : 370_st37.007_Медицинская реабилитация. или так 08.00.16.013_23681 во втором листе вот так: 370 или так 08.00.16.013
вопрос будет правильнее поставить так, как вытащить из первого листа значение до нижнего подчеркивания?
как пример, как вытащить значение до нижнего подчёркивания
Код
Sub test()
Dim LastRow As Long, i As Long, ValueFromA As String
Dim A As Worksheet, B As Worksheet
Set A = Worksheets("Page1")
Set B = Worksheets("Лист2")
'снимаем фильтры
If A.FilterMode = True Then A.ShowAllData
If B.FilterMode = True Then B.ShowAllData
LastRow = A.cells(Rows.count, 1).End(xlUp).Row
For i = 2 To LastRow
'если в ячейке есть нижнее подчёркивание
If InStr(1, A.cells(i, 12), "_", vbTextCompare) > 0 Then
ValueFromA = Split(A.cells(i, 12), "_")(0) 'разделяем строку через Split по знаку _ и берём первое значение
'или так
'ValueFromA = Left(A.cells(i, 12), InStr(1, A.cells(i, 12), "_", vbTextCompare) - 1)
End If
Next i
End Sub
Inexsu, а функция универсальна? там есть несколько видов как сделали вы, есть вот такой 08.00.16.013_23681 и вроде еще какой-то и если не сложно, можете кратенько рассказать что из этого что? заранее спасибо!
New написал: If InStr(1, A.cells(i, 12), "_", vbTextCompare) > 0 Then ValueFromA = Split(A.cells(i, 12), "_")(0)
Если не сложно, можете объяснить что из этого что, а именно, vbTextCompare и на нижней строке (0)? Это последние мои вопросы, в принципе остальное наверное сам додумаю
Ничего страшного. Как возникнет вопрос - создавайте новую тему и прикладывайте файл-пример (небольшой, всю таблицу не надо). Желательно один вопрос - одна тема. Цитировать полностью всё сообщение другого собеседника не надо. И всё будет хорошо и мы вам поможем