Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Выборка из ячеек Excel уникальных значений в третью ячейку - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Выборка из ячеек Excel уникальных значений в третью ячейку
Дмитрий Дата: Среда, 31.07.2013, 21:09 | Сообщение № 1
Группа: Гости
Знатоки Excel, подсобите, есть такой вопрос:

- Имеем 2 ячейки, скажем: А1 и В1;
-В ячейке А1 имеется следующая запись: 1;4;6;8;
-В ячейке В1 имеется следующая запись: 2;5;6;8;

Вопрос в том, какую функцию нужно поставить в ячейку С1, чтоб в ней была следующая информация: 1;2;4;5, а именно произвести выборку чисел, которые не повторяются в ячейках А1 и В1?????? Уточню - нужно выбрать числа из ячейки А1, которые не повторяются в В1, и из В1, выбрать числа, которые не повторяются в А1, и эти числа указать в ячейке С1
 
Ответить
СообщениеЗнатоки Excel, подсобите, есть такой вопрос:

- Имеем 2 ячейки, скажем: А1 и В1;
-В ячейке А1 имеется следующая запись: 1;4;6;8;
-В ячейке В1 имеется следующая запись: 2;5;6;8;

Вопрос в том, какую функцию нужно поставить в ячейку С1, чтоб в ней была следующая информация: 1;2;4;5, а именно произвести выборку чисел, которые не повторяются в ячейках А1 и В1?????? Уточню - нужно выбрать числа из ячейки А1, которые не повторяются в В1, и из В1, выбрать числа, которые не повторяются в А1, и эти числа указать в ячейке С1

Автор - Дмитрий
Дата добавления - 31.07.2013 в 21:09
vikttur Дата: Среда, 31.07.2013, 21:48 | Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2941
Репутация: 526 ±
Замечаний: 0% ±

Пишем, допустим, макрос. В файле, который, скажем, от автора...
 
Ответить
СообщениеПишем, допустим, макрос. В файле, который, скажем, от автора...

Автор - vikttur
Дата добавления - 31.07.2013 в 21:48
Дмитрий Дата: Среда, 31.07.2013, 21:59 | Сообщение № 3
Группа: Гости
т.е. сделать выборку чисел, возможно только через макрос? а возможен перенос макроса из одного файла в другой?, т.к. значения исходного документа не подлежат огласке
 
Ответить
Сообщениет.е. сделать выборку чисел, возможно только через макрос? а возможен перенос макроса из одного файла в другой?, т.к. значения исходного документа не подлежат огласке

Автор - Дмитрий
Дата добавления - 31.07.2013 в 21:59
Serge_007 Дата: Среда, 31.07.2013, 22:05 | Сообщение № 4
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
возможно только через макрос?
Из Москвы в Сидней возможно пешком дойти?


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
возможно только через макрос?
Из Москвы в Сидней возможно пешком дойти?

Автор - Serge_007
Дата добавления - 31.07.2013 в 22:05
vikttur Дата: Среда, 31.07.2013, 22:05 | Сообщение № 5
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2941
Репутация: 526 ±
Замечаний: 0% ±

возможно только через макрос?

Можно еще ручками :)
И формулам может получиться. Данные-Разделить_по_столбцам, далее формулой массива отобрать уникальные.
Но сама мысль: разъединить, чтобы потом объединить... :)
Если конечный результат не такой секретный, как
значения ... не подлежащие огласке

может, поделитесь - для чего сии действия?


Сообщение отредактировал vikttur - Среда, 31.07.2013, 22:06
 
Ответить
Сообщение
возможно только через макрос?

Можно еще ручками :)
И формулам может получиться. Данные-Разделить_по_столбцам, далее формулой массива отобрать уникальные.
Но сама мысль: разъединить, чтобы потом объединить... :)
Если конечный результат не такой секретный, как
значения ... не подлежащие огласке

может, поделитесь - для чего сии действия?

Автор - vikttur
Дата добавления - 31.07.2013 в 22:05
Дмитрий Дата: Среда, 31.07.2013, 22:13 | Сообщение № 6
Группа: Гости
Вообщем такая ситуация, есть два списка в EXCEL, точнее две колонки с адресами, одни данные предоставлены скажем управляющей компанией, другие данные из нашей базы, мне необходимо по каждому дому (1 дом - 1 строка), адрес дома в ячейке А1, номера квартир в ячейке В1 (данные управляющей) и С1(Наши данные), нужно в строке Д1 выделить спорные адреса, т.е. исключить одинаковые номера квартир, которые есть и в наших данных и данных управлялки, поясню так, они пишут что в доме по улице Достоевкого у них числятся квартиры: 1,3,5; В нашем списке числятся квартиры 1,2,4; нужно чтоб в Д1, были указаны квартиры, которые не совпадают, т.е. 2,3,4,5
 
Ответить
СообщениеВообщем такая ситуация, есть два списка в EXCEL, точнее две колонки с адресами, одни данные предоставлены скажем управляющей компанией, другие данные из нашей базы, мне необходимо по каждому дому (1 дом - 1 строка), адрес дома в ячейке А1, номера квартир в ячейке В1 (данные управляющей) и С1(Наши данные), нужно в строке Д1 выделить спорные адреса, т.е. исключить одинаковые номера квартир, которые есть и в наших данных и данных управлялки, поясню так, они пишут что в доме по улице Достоевкого у них числятся квартиры: 1,3,5; В нашем списке числятся квартиры 1,2,4; нужно чтоб в Д1, были указаны квартиры, которые не совпадают, т.е. 2,3,4,5

Автор - Дмитрий
Дата добавления - 31.07.2013 в 22:13
vikttur Дата: Среда, 31.07.2013, 22:23 | Сообщение № 7
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2941
Репутация: 526 ±
Замечаний: 0% ±

Вот! Чем дальше в лес...
Если на одиночных числах еще можно соорудить не очень большую формулу...
потрудитесь составить пример.
 
Ответить
СообщениеВот! Чем дальше в лес...
Если на одиночных числах еще можно соорудить не очень большую формулу...
потрудитесь составить пример.

Автор - vikttur
Дата добавления - 31.07.2013 в 22:23
Дмитрий Дата: Среда, 31.07.2013, 22:36 | Сообщение № 8
Группа: Гости
напишу завтра с утра, а то на раюоту не встану
 
Ответить
Сообщениенапишу завтра с утра, а то на раюоту не встану

Автор - Дмитрий
Дата добавления - 31.07.2013 в 22:36
Hugo Дата: Среда, 31.07.2013, 23:02 | Сообщение № 9
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3716
Репутация: 795 ±
Замечаний: 0% ±

365
Вот такая UDF родилась, аж на трёх словарях :)
Как применять - есть в статьях на сайте: http://www.excelworld.ru/publ/funcs/udf/udf/28-1-0-77
[vba]
Код
Function sravni(s1$, s2$, razd$)
      Dim a, b, el, t$, dic1 As Object, dic2 As Object, dic3 As Object

      a = Split(s1, razd)
      b = Split(s2, razd)

      Set dic1 = CreateObject("scripting.dictionary")
      dic1.comparemode = 1
      Set dic2 = CreateObject("scripting.dictionary")
      dic2.comparemode = 1
      Set dic3 = CreateObject("scripting.dictionary")
      dic3.comparemode = 1
      For Each el In a: dic1.Item(Trim(el)) = 0&: Next
      For Each el In b
          t = Trim(el)
          dic2.Item(t) = 0&
          If Not dic1.exists(t) Then dic3.Item(t) = 0&
      Next
      For Each el In a
          t = Trim(el)
          If Not dic2.exists(t) Then dic3.Item(t) = 0&
      Next

      sravni = Join(dic3.keys, ",")
End Function
[/vba]


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
СообщениеВот такая UDF родилась, аж на трёх словарях :)
Как применять - есть в статьях на сайте: http://www.excelworld.ru/publ/funcs/udf/udf/28-1-0-77
[vba]
Код
Function sravni(s1$, s2$, razd$)
      Dim a, b, el, t$, dic1 As Object, dic2 As Object, dic3 As Object

      a = Split(s1, razd)
      b = Split(s2, razd)

      Set dic1 = CreateObject("scripting.dictionary")
      dic1.comparemode = 1
      Set dic2 = CreateObject("scripting.dictionary")
      dic2.comparemode = 1
      Set dic3 = CreateObject("scripting.dictionary")
      dic3.comparemode = 1
      For Each el In a: dic1.Item(Trim(el)) = 0&: Next
      For Each el In b
          t = Trim(el)
          dic2.Item(t) = 0&
          If Not dic1.exists(t) Then dic3.Item(t) = 0&
      Next
      For Each el In a
          t = Trim(el)
          If Not dic2.exists(t) Then dic3.Item(t) = 0&
      Next

      sravni = Join(dic3.keys, ",")
End Function
[/vba]

Автор - Hugo
Дата добавления - 31.07.2013 в 23:02
MCH Дата: Четверг, 01.08.2013, 00:17 | Сообщение № 10
Группа: Админы
Ранг: Старожил
Сообщений: 2004
Репутация: 752 ±
Замечаний: ±

Сдается мне, что номера квартир являются положительными целыми числами, причем не очень большими (не более 1000), поэтому можно обойтись без словарей, заодно и отсортировав номера по возрастанию:
[vba]
Код
Function sravni2$(s1$, s2$, Optional razd$ = ";")
      Dim x, s$, i&
      ReDim a&(1 To 1000)
      For Each x In Split(s1 & razd & s2, razd)
          i = Val(x)
          If i > UBound(a) Then ReDim Preserve a&(1 To i)
          If i > 0 Then a(i) = a(i) + 1
      Next x
      For i = 1 To UBound(a)
          If a(i) = 1 Then s = IIf(Len(s), s & razd, "") & i
      Next i
      sravni2 = s
End Function
[/vba]


Сообщение отредактировал MCH - Четверг, 01.08.2013, 00:17
 
Ответить
СообщениеСдается мне, что номера квартир являются положительными целыми числами, причем не очень большими (не более 1000), поэтому можно обойтись без словарей, заодно и отсортировав номера по возрастанию:
[vba]
Код
Function sravni2$(s1$, s2$, Optional razd$ = ";")
      Dim x, s$, i&
      ReDim a&(1 To 1000)
      For Each x In Split(s1 & razd & s2, razd)
          i = Val(x)
          If i > UBound(a) Then ReDim Preserve a&(1 To i)
          If i > 0 Then a(i) = a(i) + 1
      Next x
      For i = 1 To UBound(a)
          If a(i) = 1 Then s = IIf(Len(s), s & razd, "") & i
      Next i
      sravni2 = s
End Function
[/vba]

Автор - MCH
Дата добавления - 01.08.2013 в 00:17
Kreoner Дата: Четверг, 01.08.2013, 06:34 | Сообщение № 11
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Вообщем вот: Прикладываю уменьшенную книгу, которая у меня есть, в этом варианте мала часть от всех адресов, но смысл думаю будет понятен ( добавил расширение .XLS к расширению .rar, так как не хотел загружать пример


Сообщение отредактировал Kreoner - Четверг, 01.08.2013, 08:30
 
Ответить
СообщениеВообщем вот: Прикладываю уменьшенную книгу, которая у меня есть, в этом варианте мала часть от всех адресов, но смысл думаю будет понятен ( добавил расширение .XLS к расширению .rar, так как не хотел загружать пример

Автор - Kreoner
Дата добавления - 01.08.2013 в 06:34
Kreoner Дата: Четверг, 01.08.2013, 06:52 | Сообщение № 12
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Спасибо огромное, функция Подошла =))) Прям как родная встала =))
 
Ответить
СообщениеСпасибо огромное, функция Подошла =))) Прям как родная встала =))

Автор - Kreoner
Дата добавления - 01.08.2013 в 06:52
MCH Дата: Четверг, 01.08.2013, 07:49 | Сообщение № 13
Группа: Админы
Ранг: Старожил
Сообщений: 2004
Репутация: 752 ±
Замечаний: ±

функция Подошла =))) Прям как родная встала =))

Интересно, чья функция "Подошла"
В приложенном файле ни моя функция, ни функция от Hugo работают не корректно, т.к. в данных используются разные разделители, в столбце "I" - точка с запятой, в столбце "J" - запятая.
Чтобы работало правильно, нужно привести к одному виду, либо переписывать функции

PS: Зачем в данном примере приложили по 300 строк "секретных" данных на "Лист1" и "Лист3"?
 
Ответить
Сообщение
функция Подошла =))) Прям как родная встала =))

Интересно, чья функция "Подошла"
В приложенном файле ни моя функция, ни функция от Hugo работают не корректно, т.к. в данных используются разные разделители, в столбце "I" - точка с запятой, в столбце "J" - запятая.
Чтобы работало правильно, нужно привести к одному виду, либо переписывать функции

PS: Зачем в данном примере приложили по 300 строк "секретных" данных на "Лист1" и "Лист3"?

Автор - MCH
Дата добавления - 01.08.2013 в 07:49
Kreoner Дата: Четверг, 01.08.2013, 08:31 | Сообщение № 14
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
MCH, данные на других листах не являются закрытыми, в них не указанны квартиры и собственники, по поводу формула, запятые я заменил на ; - так что все сработало

P/S использовал Вашу функцию


Сообщение отредактировал Kreoner - Четверг, 01.08.2013, 08:33
 
Ответить
СообщениеMCH, данные на других листах не являются закрытыми, в них не указанны квартиры и собственники, по поводу формула, запятые я заменил на ; - так что все сработало

P/S использовал Вашу функцию

Автор - Kreoner
Дата добавления - 01.08.2013 в 08:31
Hugo Дата: Четверг, 01.08.2013, 09:50 | Сообщение № 15
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3716
Репутация: 795 ±
Замечаний: 0% ±

365
Михаил, а если номер квартиры будет записан типа "14б" или "15/2"?
А если вдруг, по ошибке, на одной половине номер будет повторяться?

В моём варианте нужно бы сделать пару несущественных коррекций:

[vba]
Код
Function sravni(s1$, s2$, Optional razd$ = ",")
'...
     sravni = Join(dic3.keys, razd)
End Function
[/vba]
Да, сортировки нет... Но можно добавить как внешнюю функцию что-нибудь хоть пузырьком (правда так отсортируются как текст, но можно подкрутить):

[vba]
Код
'....
     a = dic3.keys
     SortArray a
     sravni = Join(a, razd)
End Function

Private Sub SortArray(ByRef a As Variant)
     Dim i As Long, j As Long
     Dim t As Variant
    
     'standard bubble sort loops
     For i = LBound(a) To UBound(a) - 1
         For j = i + 1 To UBound(a)
             If a(i) > a(j) Then 'change to < for descending order
                 t = a(i)
                 a(i) = a(j)
                 a(j) = t
             End If
         Next j
     Next i
End Sub
[/vba]


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
СообщениеМихаил, а если номер квартиры будет записан типа "14б" или "15/2"?
А если вдруг, по ошибке, на одной половине номер будет повторяться?

В моём варианте нужно бы сделать пару несущественных коррекций:

[vba]
Код
Function sravni(s1$, s2$, Optional razd$ = ",")
'...
     sravni = Join(dic3.keys, razd)
End Function
[/vba]
Да, сортировки нет... Но можно добавить как внешнюю функцию что-нибудь хоть пузырьком (правда так отсортируются как текст, но можно подкрутить):

[vba]
Код
'....
     a = dic3.keys
     SortArray a
     sravni = Join(a, razd)
End Function

Private Sub SortArray(ByRef a As Variant)
     Dim i As Long, j As Long
     Dim t As Variant
    
     'standard bubble sort loops
     For i = LBound(a) To UBound(a) - 1
         For j = i + 1 To UBound(a)
             If a(i) > a(j) Then 'change to < for descending order
                 t = a(i)
                 a(i) = a(j)
                 a(j) = t
             End If
         Next j
     Next i
End Sub
[/vba]

Автор - Hugo
Дата добавления - 01.08.2013 в 09:50
MCH Дата: Четверг, 01.08.2013, 10:41 | Сообщение № 16
Группа: Админы
Ранг: Старожил
Сообщений: 2004
Репутация: 752 ±
Замечаний: ±

Михаил, а если номер квартиры будет записан типа "14б" или "15/2"?
А если вдруг, по ошибке, на одной половине номер будет повторяться?

Игорь, так не было же примера, поэтому и указал в своем решении, по какому принципу реализовал
Не спорю, что твой вариант более универсален, т.к. может работать с текстовыми значениями, у не чувствителен к дублям в рамках отдельной строки
 
Ответить
Сообщение
Михаил, а если номер квартиры будет записан типа "14б" или "15/2"?
А если вдруг, по ошибке, на одной половине номер будет повторяться?

Игорь, так не было же примера, поэтому и указал в своем решении, по какому принципу реализовал
Не спорю, что твой вариант более универсален, т.к. может работать с текстовыми значениями, у не чувствителен к дублям в рамках отдельной строки

Автор - MCH
Дата добавления - 01.08.2013 в 10:41
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2025 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!