Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Выбор из списка / 13 сообщений из 13, страница 1 из 1
20.04.2006, 16:50
    #33679988
Kulikoff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбор из списка
Помогите, плз! Никак не могу найти в поиске. Есть такая ситуация -имеется список в Екселе, мне необходимо выбрать строки, в которые определенное поле повторяется. Как это реализовать? Или есть готовый макрос или функция? Помогите, плз!
...
Рейтинг: 0 / 0
20.04.2006, 17:46
    #33680239
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбор из списка
=НАЙТИ("asd";A1)
Возвращает позицию подстроки "asd" в ячейке А1 или возвращает 0, если подстрока не найдена.
...
Рейтинг: 0 / 0
20.04.2006, 17:57
    #33680290
Kulikoff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбор из списка
а можно её как-то прикрутить к макросу, чтоб он сам просматривал список и в отдельный лист выводил просто список тех значений полей, которые повторяются?
...
Рейтинг: 0 / 0
20.04.2006, 18:16
    #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
20.04.2006, 18:32
    #33680403
Kulikoff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбор из списка
ругается на эту строку
Код: plaintext
If Cells(x,  1 ).Value = Cells(x +  1 , a).Value Then
...
Рейтинг: 0 / 0
20.04.2006, 18:35
    #33680409
Дурак
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбор из списка
Как ругается?

Попробуйте или x объявить или Option Explicit убрать.
...
Рейтинг: 0 / 0
20.04.2006, 18:51
    #33680452
Kulikoff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбор из списка
Объявил я вно х - работает))))
...
Рейтинг: 0 / 0
20.04.2006, 19:12
    #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
20.04.2006, 19:28
    #33680540
Kulikoff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбор из списка
или тут что-то в передаче параметра функции CountStringsInRange?
...
Рейтинг: 0 / 0
21.04.2006, 09:37
    #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
21.04.2006, 09:52
    #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
21.04.2006, 12:54
    #33682256
HandKot
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбор из списка
внесу свою лепту

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

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


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