Профессиональные приемы работы в Microsoft Excel

Пожалуйста, войдите или зарегистрируйтесь.


Расширенный поиск  

Новости:

К первому сообщению темы должен быть прикреплен файл примера в формате xls*.
Приложив пример, Вы избавите себя и других от вопросов типа "А какой критерий?", "А куда выводить результат?", "А сколько строк?" и все тех же просьб выложить файл. Рисовать за Вас Ваши же таблички с заданиями, а затем и решение к ним, никто желанием не горит. Да и, как показывает практика, в большинстве случаев без файла решения не найти.

Извините, Гость, но вы забанены и поэтому не можете использовать систему личных сообщений.
Уважаемый пользователь, Вы вошли на форум с подозрительного ip-адреса, который ранее был задействован в рассылке спама. Возможно Вы попали в этот список по ошибке. Если это случилось, свяжитесь, пожалуйста, с администратором по электронному адресу, указан
Вы забанены навсегда.

Автор Тема: Выбор значения из массива данных по нескольким условиям  (Прочитано 3333 раз)

sovere

  • Новичок
  • *
  • Уважение: +0/-0
  • Оффлайн Оффлайн
  • Сообщений: 2

Имеется массив данных, где в первых 2 столбцах указаны номер автомобиля и номер смены,  последующие столбцы (31) содержат Ф.И.О. водителей для каждого дня месяца.
Задача - в реестре, состоящем из 4 столбцов "номер машины", "дата", "смена", "Ф.И.О." заполнить столбец Ф.И.О. на основании данных массива.

Если бы водители имели просто числовой номер вместо фамилии, решение было-бы простым "СУММЕСЛИ" с фигурными скобочками.
Но необходимо оперировать именно фамилиями.

Прикрепил файл с примером.

Буду признателен за подсказку.
Записан

Hugo121

  • Постоялец
  • ***
  • Уважение: +42/-0
  • Оффлайн Оффлайн
  • Сообщений: 283

Как вариант макросом, хотя вероятно можно сделать и формулами. Но если данных много, лучше макросом.
Option Explicit

Sub tt()
Dim a(), b(), i As Long, ii As Long, iii As Long

a = Sheets(1).[b2:h8].Value
b = Sheets(2).[b3:e20].Value

For i = 1 To UBound(a)
For ii = 1 To UBound(b)
If a(i, 1) = b(ii, 1) Then
If a(i, 2) = b(ii, 2) Then
    For iii = 3 To 7
    If b(ii, 3) = a(1, iii) Then b(ii, 4) = a(i, iii): Exit For
    Next
    Exit For
End If
End If
Next ii, i

Sheets(2).[b3:e20].Value = b
End Sub
Диапазоны можно сделать динамическими, и можно результат собирать в третий массив, будет быстрее выгрузка, но чуть непонятнее код :)
« Последнее редактирование: 14.11.2010, 18:08:37 от Hugo121 »
Записан
webmoney: E265281470651 Z422237915069 R41892628200

ZORRO2005

  • Глобальный модератор
  • Старожил
  • *****
  • Уважение: +91/-0
  • Оффлайн Оффлайн
  • Сообщений: 851

E3:
=ИНДЕКС(Табель!$D$3:$H$8;ПОИСКПОЗ(B3&C3;Табель!$B$3:$B$8&Табель!$C$3:$C$8;0);ПОИСКПОЗ(D3;Табель!$D$2:$H$2;0))Формула массива
Записан

DV68

  • Постоялец
  • ***
  • Уважение: +36/-0
  • Оффлайн Оффлайн
  • Сообщений: 372

Пара вариантов во вложении:

упс, один вариант (формулу массива) уже дали :)
Записан

sovere

  • Новичок
  • *
  • Уважение: +0/-0
  • Оффлайн Оффлайн
  • Сообщений: 2

Спасибо!!!!
Это круто!!
Для простоты избрал второе.
Записан

ZORRO2005

  • Глобальный модератор
  • Старожил
  • *****
  • Уважение: +91/-0
  • Оффлайн Оффлайн
  • Сообщений: 851

Dmitr68,
Спасибо за интересное решение для определения строки:
Цитировать
ПОИСКПОЗ(2;МУМНОЖ(СЧЁТЕСЛИ(B3:C3;Табель!B$3:C$8);{1:1});0)
Записан
 



Темы без ответов

01.12.2014 15:25 Разделение окна 377
30.11.2014 21:25 количество положительных попаданий подряд 294
20.11.2014 19:25 Конфликт с русскими буквами при запуске макроса 214
31.10.2014 13:29 Из табличных данных в SmartArt 584
29.10.2014 22:08 Автоформат импортированного текста 762
17.10.2014 14:50 Групировка Excel 1204
09.10.2014 19:14 Прошу помочь определить тенденцию вероятности следующего исхода матча 898
27.09.2014 19:10 Местоположение примечания 788
24.09.2014 08:36 Надстройка ЁXCEL 1631
14.09.2014 22:41 Использование ComboBox для копирования данных 995





Яндекс цитирования msexcel.ru Яндекс.Метрика

Страница сгенерирована за 0.311 секунд. Запросов: 39.