Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Сортировка ФИО с использованием VBA
 
Kuzmich, спасибо Вам огромное!
Сортировка ФИО с использованием VBA
 
Коллеги, добрый вечер.

Возник следующий вопрос. Есть острая необходимость отсортировать список ФИО используя макрос.

Суть достаточно простая: есть n ФИО в столбце, количество которых может менять и нужно используя макрос отсортировать их в этом же столбце по возрастанию (в идеале), либо отсортировать и вставить их в соседний столбец (если первый вариант невозможен).

Файл в приложении.  
Макрос для копирования данных по условию
 
Спасибо все огромное, за предложенные варианты!!
Макрос для копирования данных по условию
 
Коллеги, всем привет.

Столкнулся со следующей задачей. Возможно кто-нибудь сможет в этом помочь. Пример файла прикрепил к письму.

Есть обычная таблица с различными данными (Лист1). Необходимо на лист 2 при помощи макроса скопировать те ФИО из первого листа, у которых в столбце "Проверка" стоит "ОШИБКА".

И также есть такая же задача только немного с другим исходом. Возможно ли сделать все что описано в предыдущем пункте, но вставить ФИО на Лист3 не друг за другом, а с интервалом в 4 строки. На Листе 3 выделил ячейки желтым куда должны вставлять отобранные ФИО.

P.S. Возможно это можно сделать формулой, сам не смог придумать, чтобы брались только нужные ФИО, а те ФИО где в столбце "Проверка" стоит "ОК" оставались не тронутыми.
Изменено: AndyFit - 03.10.2017 23:55:59
Экспоненциальное число
 
Спасибо. Помогло.
Экспоненциальное число
 
Коллеги, возникла следующая проблема.

При вводе формулы =T5-L5 - получается число 0 и все окей, протягивая эту формулу вниз после определенного количества срок выскакивает ошибка ЗНАЧ тк в некоторых ячейках ниже не заполнены значения и тд

Скрыл эту ошибку формулой ЕСЛИОШИБКА, чтобы вместо ошибки показывал пустую ячейку. Формула следующая =ЕСЛИОШИБКА(T5-L5;"")

Но теперь в некоторых ячейках почему то вместо значений появляются экспоненциальные числа. Т.е. в ячейке то, к примеру, показывается число 0, но когда скопировать его на другое место выдает, к примеру, -1,39698386192322E-09 .

Почему такое получается и как это можно исправить?

Самое смешное, что если просто протянуть формулу вычитания (к примеру, T5-L5) то все ок и никаких экспоненциальных чисел нету.
Выборка уникальных значений и их копирование макросом
 
Нашел решение. Если кому интересно то прикладываю код макроса. Единственный вопрос, может кто скажет как сделать так, чтобы выбирался первый диапазон не с активного листа, а с определенного?
Код
Sub Выборка()
    ' берем диапазон ячеек из первого столбца активного листа
    Dim ПервыйСтолбец As Range: Set ПервыйСтолбец = Range([A2], Range("A" & Rows.Count).End(xlUp))

    ' выбираем из него уникальные значения
    МассивУникальных = UniqueValuesFromArray(ПервыйСтолбец.Value, 1)

    ' и заносим их в другой столбец, начиная с ячейки A2
    Worksheets("Лист2").Range("A2").Resize(UBound(МассивУникальных)).Value = МассивУникальных
End Sub

Sub Очистка()
    Worksheets("Лист2").Range([A2], Range("A" & Rows.Count).End(xlUp)).ClearContents
End Sub

Function UniqueValuesFromArray(ByVal arr, ByVal col As Long) As Variant
    ' перебирает все значения в столбце Col двумерного массива arr
    ' в поисках уникальных значений. Возвращает двумерный вертикальный массив
    ' размерностью N * 1, содержащий уникальные значения из столбца col
    If Not IsArray(arr) Then MsgBox "Это не массив!", vbCritical: Exit Function
    If col > UBound(arr, 2) Then MsgBox "Нет такого столбца в массиве!", vbCritical: Exit Function
    If col < LBound(arr, 2) Then MsgBox "Нет такого столбца в массиве!", vbCritical: Exit Function

    On Error Resume Next: Dim coll As New Collection, txt$
    For i = LBound(arr) To UBound(arr)
        txt$ = Trim(arr(i, col)): coll.Add txt$, txt$
    Next i
    ReDim newarr(1 To coll.Count, 1 To 1)
    For i = 1 To coll.Count: newarr(i, 1) = coll(i): Next i
    UniqueValuesFromArray = newarr
End Function
Изменено: AndyFit - 28.09.2017 00:57:38
Выборка уникальных значений и их копирование макросом
 
Коллеги, всем добрый вечер.

Снова обращаюсь к Вам за помощью, возможно кто-нибудь сможет помочь со сложившейся задачей.

Есть исходные данные (файл прикрепил к письму):
На листе 1 есть список ФИО, а на лист 2 нужно вставить только уникальные ФИО с первого листа при помощи макроса.

Полностью цепочка выглядит следующим образом:
1. Необходимо применить к диапазону с ФИО на листе 1 функцию СЖПРОБЕЛЫ, т.к. помимо просто повторяющихся ФИО есть те, где существуют лишние пробелы.
2. Далее необходимо из этого диапазона выбрать только уникальные ФИО.
3. Вставить уникальные ФИО на лист 2.

Цель - прописать все это через макрос и чтобы при нажатии на кнопку эта процедура проводилась автоматически, чтобы люди в ручную не осуществляли эти 3 действия.

На данный момент в макросе прописал код, который копирует данные из определенного диапазона и вставляет в необходимое место, как добавить к нему предварительное очищение функцией СЖПРОБЕЛЫ и выборку уникальных значений, пока что не знаю. Возможно, кто-то сможет помочь с такой задачей.
Суммирование по нескольким условиям
 
Цитата
Андрей VG написал:
Коллега, это не их путь. Так слишком просто
забыл указать, что сводная таблица не подходит, т.к. нужно добавлять промежуточные столбцы и т.д.
Суммирование по нескольким условиям
 
Друзья, всем добрый день.

Есть следующая ситуация. Пример прикрепил.

Существуют данные представленные в обычном виде (1 строка - 1 операция). Есть ФИО и товар который продал этот человек и стоимость. Необходимо просуммировать данные по каждому человеку, но не в разрезе каждого из товаров, а по определенным группам.

Например:
Группа 1: Яблоки, Виноград, Апельсины
Группа 2: Помидоры, Огурцы, Капуста
Т.е. нужно посчитать сумму продаж каждого человека по группе 1 и группе 2, а также общую сумму продаж.

Была идея сделать именованный диапазон и его указать в формуле СУММЕСЛИМН, но это работает пока выбирать в качестве критерия 1 продукт, а если нужно показать сумму по группе то не знаю как сделать.
Выборка примерных данных по условию
 
Вот так, без полного текста в цитате, хуже? [МОДЕРАТОР]

StepanWolkoff, А вот за это Вам тоже огромное спасибо! Я всю голову сломал как такое сделать, но не смог додуматься. Спасибо!
Выборка примерных данных по условию
 
Цитата
Андрей VG написал: Bema , не зря спрашивает, уже не раз и не два задача по "забывчивости" вопрошающего менялась  в постановке
В следующий раз буду еще корректнее ставить вопрос. Спасибо за уточнение.

Цитата
_Igor_61 написал: Привести список фамилий на Листе2 в нормальное состояние:
Как вариант наверное да, так проще. Думал об этом изначально. Но то, что у некоторых ФИО есть еще латиница впереди, путает все и вся. Но все равно спасибо за Ваш вариант!

Bema, спасибо Вам огромное!! Вроде в формуле разобрался, завтра попробую перенести на исходный файл.
Выборка примерных данных по условию
 
Если бы задача было тривиальной, я бы не пытался обратиться за помощью).

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

Есть следующая задача. Описание ниже.

Есть две таблицы, где по сути содержатся одинаковые данные только немного в разном виде. Одну таблицу заполняют одни лица, а другую другие. Таблицы имеют нормальный вид (в одной строке содержатся атрибуты по одному человеку и число).

Нужно в итоговую таблицу сгруппировать данные из первых двух. Грубо говоря сделать то что делает свободная таблица, но через функцию СУММЕСЛИМН, т.к. сводную очень сложно подогнать под те форматы, которые требуются в текущей ситуации и еще куча всего.

Единственная проблема вот в чем, ключевое поле это ФИО сотрудника. В одной таблице оно указано в обычном формате (н-р: Иванов Иван Иванович) и соответственно посчитать то что требуется не представляет труда, а во второй ФИО немного кривое (н-р: 22525 Иванов Иван Иванович). В итоговой (третьей) таблице, куда все подтягиваем стоят ФИО в нормальном формате, и вот собственно вся проблема: как автоматически подтянуть данные из второй таблицы где кривое ФИО?

Есть базовый вариант СУММЕСЛИМН(A1:A10;B1:B10;"*Иванов Иван Иванович*";C1:C10;F3) - диапазоны заданы условные просто так. Проблема этого варианта в том, что на больших массивах данных, прописывать каждое ФИО ужасное и бесполезное занятие. Возможно есть какой-то вариант решения данной ситуации?

Примерный файл прикрепил к теме. В нем нужно в желтые ячейки на Листе 3 подтянуть данные из Листа 2.


P.S. Естественно в оригинале файл имеет в разы больший объем данных и какие-то полуручные способы будут врятли эффективны.
Изменено: AndyFit - 20.09.2017 22:12:19
Страницы: 1
Наверх