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

Вход

Регистрация

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

 

= Мир MS Excel/Поиск и подсчет количества уникальных значений в массиве - Страница 2 - Мир MS Excel

Старая форма входа
  • Страница 2 из 2
  • «
  • 1
  • 2
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Поиск и подсчет количества уникальных значений в массиве (Поиск и подсчет количества уникальных значений в массиве)
Поиск и подсчет количества уникальных значений в массиве
Vyacheslav Дата: Вторник, 09.04.2013, 11:47 | Сообщение № 21
Группа: Пользователи
Ранг: Новичок
Сообщений: 11
Репутация: 0 ±
Замечаний: 0% ±

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


Сообщение отредактировал Vyacheslav - Вторник, 09.04.2013, 11:50
 
Ответить
СообщениеПоразбирался сам и получилось но не совсем
Вот такой макрос, но изменения ячеек считывается только при изменении в диапазоне 1
т.е. меняя что-то в диапазоне 2 ничего в выводе результата не меняется, но только затронув диапазон1, даже оставив в ячейках теже значения, все считывается и работает...
Как сделать все процессы независимыми?

Автор - Vyacheslav
Дата добавления - 09.04.2013 в 11:47
_Boroda_ Дата: Вторник, 09.04.2013, 15:41 | Сообщение № 22
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Самый простой способ (не значит, что самый правильный)
[vba]
Код
If Intersect(Target, [диапазон1]) Is Nothing Then Goto A
...
End With

A:
Dim f As Object, arw, em, k&
...
[/vba]


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеСамый простой способ (не значит, что самый правильный)
[vba]
Код
If Intersect(Target, [диапазон1]) Is Nothing Then Goto A
...
End With

A:
Dim f As Object, arw, em, k&
...
[/vba]

Автор - _Boroda_
Дата добавления - 09.04.2013 в 15:41
Vyacheslav Дата: Вторник, 09.04.2013, 16:15 | Сообщение № 23
Группа: Пользователи
Ранг: Новичок
Сообщений: 11
Репутация: 0 ±
Замечаний: 0% ±

Цитата (_Boroda_)
Самый простой способ (не значит, что самый правильный)
If Intersect(Target, [диапазон1]) Is Nothing Then Goto A
...
End With

A:
Dim f As Object, arw, em, k&
...

Не сработало, при таком написании результат на изменения в диапазон1 реагирует 1 раз и всё. А по второму совсем без реакции
Так же реакция на изменения в диапазон1 отображается при изменении диапазон2


Сообщение отредактировал Vyacheslav - Вторник, 09.04.2013, 16:23
 
Ответить
Сообщение
Цитата (_Boroda_)
Самый простой способ (не значит, что самый правильный)
If Intersect(Target, [диапазон1]) Is Nothing Then Goto A
...
End With

A:
Dim f As Object, arw, em, k&
...

Не сработало, при таком написании результат на изменения в диапазон1 реагирует 1 раз и всё. А по второму совсем без реакции
Так же реакция на изменения в диапазон1 отображается при изменении диапазон2

Автор - Vyacheslav
Дата добавления - 09.04.2013 в 16:15
nilem Дата: Вторник, 09.04.2013, 17:39 | Сообщение № 24
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
может как-то так
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
Dim arr, el, n&, rng As Range
Select Case False
     Case Intersect(Target, [диапазон1]) Is Nothing
         arr = [диапазон1].Value: Set rng = Range("результат1")
     Case Intersect(Target, [диапазон2]) Is Nothing
         arr = [диапазон2].Value: Set rng = Range("результат2")
     Case Else: Exit Sub
End Select
With CreateObject("scripting.dictionary")
     For Each el In arr
         .Item(el) = .Item(el) + 1
     Next
'    n = Application.Min(Rows.Count - rng.Row + 1, UBound(arr) * UBound(arr, 2))
     rng.ClearContents
     rng.Resize(.Count) = Application.Transpose(Array(.Keys, .items))
End With
End Sub
[/vba]
n - непонятно для чего


Яндекс.Деньги 4100159601573
 
Ответить
Сообщениеможет как-то так
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
Dim arr, el, n&, rng As Range
Select Case False
     Case Intersect(Target, [диапазон1]) Is Nothing
         arr = [диапазон1].Value: Set rng = Range("результат1")
     Case Intersect(Target, [диапазон2]) Is Nothing
         arr = [диапазон2].Value: Set rng = Range("результат2")
     Case Else: Exit Sub
End Select
With CreateObject("scripting.dictionary")
     For Each el In arr
         .Item(el) = .Item(el) + 1
     Next
'    n = Application.Min(Rows.Count - rng.Row + 1, UBound(arr) * UBound(arr, 2))
     rng.ClearContents
     rng.Resize(.Count) = Application.Transpose(Array(.Keys, .items))
End With
End Sub
[/vba]
n - непонятно для чего

Автор - nilem
Дата добавления - 09.04.2013 в 17:39
Vyacheslav Дата: Вторник, 09.04.2013, 19:16 | Сообщение № 25
Группа: Пользователи
Ранг: Новичок
Сообщений: 11
Репутация: 0 ±
Замечаний: 0% ±

Цитата (nilem)
может как-то так
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
Dim arr, el, n&, rng As Range
Select Case False
Case Intersect(Target, [диапазон1]) Is Nothing
arr = [диапазон1].Value: Set rng = Range("результат1")
Case Intersect(Target, [диапазон2]) Is Nothing
arr = [диапазон2].Value: Set rng = Range("результат2")
Case Else: Exit Sub
End Select
With CreateObject("scripting.dictionary")
For Each el In arr
.Item(el) = .Item(el) + 1
Next
'    n = Application.Min(Rows.Count - rng.Row + 1, UBound(arr) * UBound(arr, 2))
rng.ClearContents
rng.Resize(.Count) = Application.Transpose(Array(.Keys, .items))
End With
End Sub
[/vba]

n - непонятно для чего


совсем не работает, ошибка на ...e: Set rng = Range("результат1")
 
Ответить
Сообщение
Цитата (nilem)
может как-то так
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
Dim arr, el, n&, rng As Range
Select Case False
Case Intersect(Target, [диапазон1]) Is Nothing
arr = [диапазон1].Value: Set rng = Range("результат1")
Case Intersect(Target, [диапазон2]) Is Nothing
arr = [диапазон2].Value: Set rng = Range("результат2")
Case Else: Exit Sub
End Select
With CreateObject("scripting.dictionary")
For Each el In arr
.Item(el) = .Item(el) + 1
Next
'    n = Application.Min(Rows.Count - rng.Row + 1, UBound(arr) * UBound(arr, 2))
rng.ClearContents
rng.Resize(.Count) = Application.Transpose(Array(.Keys, .items))
End With
End Sub
[/vba]

n - непонятно для чего


совсем не работает, ошибка на ...e: Set rng = Range("результат1")

Автор - Vyacheslav
Дата добавления - 09.04.2013 в 19:16
_Boroda_ Дата: Вторник, 09.04.2013, 19:29 | Сообщение № 26
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Цитата (Vyacheslav)
е сработало, при таком написании результат на изменения в диапазон1 реагирует 1 раз и всё. А по второму совсем без реакции
Так же реакция на изменения в диапазон1 отображается при изменении диапазон2

Уберите слово not в строке
[vba]
Код
If Not Intersect(Target, [диапазон2]) Is Nothing Then Exit Sub
[/vba]
Не заметил я его сразу. И напишите Goto A, как я уже писал выше. У меня все работает.
Цитата (Vyacheslav)
ошибка на ...e: Set rng = Range("результат1")

Значит, у Вас в файле нет имени "Результат1"
У меня макрос от nilem работает


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
Сообщение
Цитата (Vyacheslav)
е сработало, при таком написании результат на изменения в диапазон1 реагирует 1 раз и всё. А по второму совсем без реакции
Так же реакция на изменения в диапазон1 отображается при изменении диапазон2

Уберите слово not в строке
[vba]
Код
If Not Intersect(Target, [диапазон2]) Is Nothing Then Exit Sub
[/vba]
Не заметил я его сразу. И напишите Goto A, как я уже писал выше. У меня все работает.
Цитата (Vyacheslav)
ошибка на ...e: Set rng = Range("результат1")

Значит, у Вас в файле нет имени "Результат1"
У меня макрос от nilem работает

Автор - _Boroda_
Дата добавления - 09.04.2013 в 19:29
Vyacheslav Дата: Вторник, 09.04.2013, 19:34 | Сообщение № 27
Группа: Пользователи
Ранг: Новичок
Сообщений: 11
Репутация: 0 ±
Замечаний: 0% ±

_Boroda_, нашел у себя ошибку... слез диапазон


Сообщение отредактировал Vyacheslav - Среда, 10.04.2013, 10:34
 
Ответить
Сообщение_Boroda_, нашел у себя ошибку... слез диапазон

Автор - Vyacheslav
Дата добавления - 09.04.2013 в 19:34
Vyacheslav Дата: Суббота, 13.04.2013, 11:15 | Сообщение № 28
Группа: Пользователи
Ранг: Новичок
Сообщений: 11
Репутация: 0 ±
Замечаний: 0% ±

Появился такой вопрос: возможно ли модифицировать код, чтобы можно было считывать информацию с двух и более диапазонов, но выводить один результат?

Заранее, Спасибо!
 
Ответить
СообщениеПоявился такой вопрос: возможно ли модифицировать код, чтобы можно было считывать информацию с двух и более диапазонов, но выводить один результат?

Заранее, Спасибо!

Автор - Vyacheslav
Дата добавления - 13.04.2013 в 11:15
RAN Дата: Суббота, 13.04.2013, 11:22 | Сообщение № 29
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Там и модифицировать ничего особо не надо. Но непонятны начальные условия - как определяются диапазоны, и как запускается код.
А все изменения касаются только этой части.


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеТам и модифицировать ничего особо не надо. Но непонятны начальные условия - как определяются диапазоны, и как запускается код.
А все изменения касаются только этой части.

Автор - RAN
Дата добавления - 13.04.2013 в 11:22
Vyacheslav Дата: Суббота, 13.04.2013, 11:29 | Сообщение № 30
Группа: Пользователи
Ранг: Новичок
Сообщений: 11
Репутация: 0 ±
Замечаний: 0% ±

Это есть, некоторые переменные лишние, но вот как распространяться на на несколько диапазонов не понимаю =(
 
Ответить
СообщениеЭто есть, некоторые переменные лишние, но вот как распространяться на на несколько диапазонов не понимаю =(

Автор - Vyacheslav
Дата добавления - 13.04.2013 в 11:29
Vyacheslav Дата: Вторник, 16.04.2013, 20:42 | Сообщение № 31
Группа: Пользователи
Ранг: Новичок
Сообщений: 11
Репутация: 0 ±
Замечаний: 0% ±

Цитата (Vyacheslav)
Появился такой вопрос: возможно ли модифицировать код, чтобы можно было считывать информацию с двух и более диапазонов, но выводить один результат?

Заранее, Спасибо!


Кто-нибудь может помочь?!
третий день бьюсь - не выходит =(((
 
Ответить
Сообщение
Цитата (Vyacheslav)
Появился такой вопрос: возможно ли модифицировать код, чтобы можно было считывать информацию с двух и более диапазонов, но выводить один результат?

Заранее, Спасибо!


Кто-нибудь может помочь?!
третий день бьюсь - не выходит =(((

Автор - Vyacheslav
Дата добавления - 16.04.2013 в 20:42
Vyacheslav Дата: Понедельник, 06.05.2013, 09:14 | Сообщение № 32
Группа: Пользователи
Ранг: Новичок
Сообщений: 11
Репутация: 0 ±
Замечаний: 0% ±

Цитата (Vyacheslav)
Цитата (Vyacheslav писал(а)):
Появился такой вопрос: возможно ли модифицировать код, чтобы можно было считывать информацию с двух и более диапазонов, но выводить один результат?

Заранее, Спасибо!

Кто-нибудь может помочь?!
третий день бьюсь - не выходит =(((


Кто-нибудь! Ау!
 
Ответить
Сообщение
Цитата (Vyacheslav)
Цитата (Vyacheslav писал(а)):
Появился такой вопрос: возможно ли модифицировать код, чтобы можно было считывать информацию с двух и более диапазонов, но выводить один результат?

Заранее, Спасибо!

Кто-нибудь может помочь?!
третий день бьюсь - не выходит =(((


Кто-нибудь! Ау!

Автор - Vyacheslav
Дата добавления - 06.05.2013 в 09:14
Volkofx Дата: Пятница, 05.06.2015, 17:27 | Сообщение № 33
Группа: Пользователи
Ранг: Участник
Сообщений: 71
Репутация: 1 ±
Замечаний: 20% ±

Excel 2013
Вариант формульного решения с доп. столбцом (можно и без поп. столбца, только формула увеличится в размере раза в три, и считать она будет медленнее)

Формула получилась нечувствительна к регистру
К сообщению приложен файл: 1204082.xls(30Kb)


Господа, хотел сделать на основе этого решения аналогичный пример, но где диапазон находится в одном столбце, но не получилось, в чем проблема?? Что меняется в этом случае?
[moder]Читаем Правила форума, создаём свою тему. Эта тема закрыта[/moder]
К сообщению приложен файл: 2312183.xls (39.0 Kb)


Сообщение отредактировал Pelena - Пятница, 05.06.2015, 17:54
 
Ответить
Сообщение
Вариант формульного решения с доп. столбцом (можно и без поп. столбца, только формула увеличится в размере раза в три, и считать она будет медленнее)

Формула получилась нечувствительна к регистру
К сообщению приложен файл: 1204082.xls(30Kb)


Господа, хотел сделать на основе этого решения аналогичный пример, но где диапазон находится в одном столбце, но не получилось, в чем проблема?? Что меняется в этом случае?
[moder]Читаем Правила форума, создаём свою тему. Эта тема закрыта[/moder]

Автор - Volkofx
Дата добавления - 05.06.2015 в 17:27
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Поиск и подсчет количества уникальных значений в массиве (Поиск и подсчет количества уникальных значений в массиве)
  • Страница 2 из 2
  • «
  • 1
  • 2
Поиск:

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