powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Выбор из списка
13 сообщений из 13, страница 1 из 1
Выбор из списка
    #33679988
Kulikoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Помогите, плз! Никак не могу найти в поиске. Есть такая ситуация -имеется список в Екселе, мне необходимо выбрать строки, в которые определенное поле повторяется. Как это реализовать? Или есть готовый макрос или функция? Помогите, плз!
...
Рейтинг: 0 / 0
Выбор из списка
    #33680239
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
=НАЙТИ("asd";A1)
Возвращает позицию подстроки "asd" в ячейке А1 или возвращает 0, если подстрока не найдена.
...
Рейтинг: 0 / 0
Выбор из списка
    #33680290
Kulikoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а можно её как-то прикрутить к макросу, чтоб он сам просматривал список и в отдельный лист выводил просто список тех значений полей, которые повторяются?
...
Рейтинг: 0 / 0
Выбор из списка
    #33680363
vkodor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можно отсортировать список и пробежаться по нему,
сравнивая последующее значение с предыдущем
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Sub p()
    Range("A1:A100").Sort Key1:=Range("A1")
    x =  1 
    Do
        If Cells(x,  1 ).Value = Cells(x +  1 , a).Value Then Cells(x,  2 ).Value =  1 
        x = x +  1 
    Loop Until Cells(x,  1 ).Value = ""
End Sub
...
Рейтинг: 0 / 0
Выбор из списка
    #33680403
Kulikoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ругается на эту строку
Код: plaintext
If Cells(x,  1 ).Value = Cells(x +  1 , a).Value Then
...
Рейтинг: 0 / 0
Выбор из списка
    #33680409
Дурак
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как ругается?

Попробуйте или x объявить или Option Explicit убрать.
...
Рейтинг: 0 / 0
Выбор из списка
    #33680452
Kulikoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Объявил я вно х - работает))))
...
Рейтинг: 0 / 0
Выбор из списка
    #33680511
Kulikoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Помогите ещё, плиз, написал такие вот функции:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
Public Function CountStringsInRange(r As Range, target As String) As Long
  Dim count As Long
  Dim r1 As Range
  Dim AddressOfFirstFind
  
  count =  0 
  
  Set r1 = r.Find(target)
  
  If r1 Is Nothing Then
    CountStringsInRange =  0 
    Exit Function
  End If
  
  AddressOfFirstFind = r1.Address
  Do
    count = count +  1 
    
    Set r1 = r.FindNext(r1)
    Loop While r1.Address <> AddressOfFirstFind
    
    CountStringsInRange = count
    
End Function
 
Public Sub TestCountStrings()
  Dim count As Long
  Dim target As String
  Dim rr As Range
  n =  1 
  For Each rr In Selection
  target = rr.Value
  count = CountStringsInRange(rr, target)
  'MsgBox "Строка '" & target & "' была найдена " & count & " раз"
  Range("C" & n).Value = target
  Range("D" & n).Value = count
  n = n +  1 
  Next rr
   
End Sub

Первая функция считает количество повторений в выделенном диапазоне, вторая её вызывает, перелистывая все значения. Пока во второй функции не делал цикла, а значение вводил с клавы всё работало, когда намутил цикл - перестало, оно мне выдает такое:

автор
Куликов Куликов 1
Максим Максим 1
Максим Максим 1
Александрович Александрович 1
Карандаш Карандаш 1
Муть Муть 1
Карандаш Карандаш 1


т.е. не подсчитывает кол-во одинаковых слов, а просто переписывает. Помогите разобраться с кодом, плз, всё дело в цикле во второй функции
...
Рейтинг: 0 / 0
Выбор из списка
    #33680540
Kulikoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
или тут что-то в передаче параметра функции CountStringsInRange?
...
Рейтинг: 0 / 0
Выбор из списка
    #33681237
vkodor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kulikoffругается на эту строку
Код: plaintext
If Cells(x,  1 ).Value = Cells(x +  1 , a).Value Then


вместо a поставь 1
Код: plaintext
If Cells(x,  1 ).Value = Cells(x +  1 ,  1 ).Value Then
[/quot]
...
Рейтинг: 0 / 0
Выбор из списка
    #33681278
vkodor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KulikoffПомогите ещё, плиз, написал такие вот функции:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
 
Public Sub TestCountStrings()
  Dim count As Long
  Dim target As String
  Dim rr As Range
  n =  1 
  For Each rr In Selection
  target = rr.Value
  count = CountStringsInRange(rr, target)
  'MsgBox "Строка '" & target & "' была найдена " & count & " раз"
  Range("C" & n).Value = target
  Range("D" & n).Value = count
  n = n +  1 
  Next rr
   
End Sub


в данной строке
Код: plaintext
count = CountStringsInRange(rr, target)
rr - это одна ячейка, а тебе надо передавать весь диапозон,
а то получается поиск в одной ячейке.
надо так
Код: plaintext
count = CountStringsInRange(Selection, target)

или так

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Public Sub TestCountStrings()
  Dim count As Long
  Dim target As String
  Dim rr As Range, rng As Range
  n =  1 
  Set  rng = Selection
  For Each rr In Selection
  target = rr.Value
  count = CountStringsInRange(rng, target)
  'MsgBox "Строка '" & target & "' была найдена " & count & " раз"
  Range("C" & n).Value = target
  Range("D" & n).Value = count
  n = n +  1 
  Next rr
   
End Sub

и не советую использовать название переменной "Target" помойму это зарезервированное слово, назови как - нибудь по другому например "myTarget"
...
Рейтинг: 0 / 0
Выбор из списка
    #33682256
Фотография HandKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
внесу свою лепту

заходишь в хелп по Екселю
и набираешь в поиске DISTINCT
там предложат такие варианты:

1) с использованием "СЧЕТЕСЛИ"
2) с использованием "Сводной таблицы"
3) с использованием "Расширенного фильтра"
...
Рейтинг: 0 / 0
Выбор из списка
    #33683166
Lenus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot Kulikoff]
может это поможет посмотри ):
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Выбор из списка
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]