| | #1 | |
|
Savelev
Гость
Сообщений: n/a |
Как получить уникальные значения из колонки таблицы в VBA Excel например в массив? При работе в Excel при установке автофильтра, Excel моментом заполняет ListBox уникальными значениями, даже при большом заполнении таблицы. | |
| Другие темы раздела | Форум программистов VBA. Программирование на Visual Basic for Applications. Помощь в решении задач. |
| VBA Нужно правильно построить Nodes Ludi pomogite! U mena est Tabliza w kototoi 2 Kolomki: OE_ID OE_OE 7 7 9 7 11 9 1 11 2 11. Нужно правильно построить Nodes | VBA Можно ли с помощью формы в одной книге Excel вносить данные в ячейки двух книг? Можно ли с помощью формы в одной книге Excel вносить данные в ячейки двух книг?. Можно ли с помощью формы в одной книге Excel вносить данные в ячейки двух книг? |
| | #2 | |
| Korolana Форумчанин Регистрация: 27.08.2008
Сообщений: 147 Репутация: 0 (0) |
Sub FillArrayWithUniqueValue() Dim MyArray() As Variant Columns('A:A').Select ' select your column Range('A1:A14').AdvancedFilter Action:=xlFilterInPlace, Unique:=True ' filter on this column to receive unique values ' part of rows will be hidden and I need not include them into my next selection ActiveCell.CurrentRegion.Select ' copy unique values from this column to some free temporary place and select this region nRow = Selection.Rows.Count Selection.Copy ActiveSheet.Paste Destination:=Cells(nRow + 2, 2) Cells(nRow + 2, 2).Select ActiveCell.CurrentRegion.Select MyArray = Selection 'fill my array with our unique values from Excel ActiveCell.CurrentRegion.Clear ' clear our temporary region ActiveSheet.ShowAllData ' clear our filter End Sub Now, all your data in two-dimensial array. In this case, you can see your data it in Myarray(1,1), MyArray(2,1)...and so on | |
| | ||
| | #3 | |
|
Savelev
Гость
Сообщений: n/a |
Спасибо за пример.
| |
| | #4 | |
| yuniki Форумчанин Регистрация: 28.09.2007
Сообщений: 288 Репутация: 0 (0) |
Я это делаю по другому (нужно для заполнения списков в контролах): ' Выбирает из заданого именованного диапазона с заголовком RngName ' столбик fldName и отбирает только уникальные его значения ' в массиве aSel (<размер массива>,<Значение1>,...) ' Структура именованного диапазона : ' <ИмяСтолбца1 ><ИмяСтолбца2>... ' <ЗначСтолбца1><ЗначCтолбца2>... Public Function UnicSelect(ByRef rngName As String, ByRef fldName As String, _ ByRef aSel() As Variant, _ Optional ByRef strSQL As String = '') Dim cnn As ADODB.Connection, Rs As ADODB.Recordset, i As Long Set cnn = New ADODB.Connection cnn.Open 'Provider=Microsoft.Jet.OLEDB.4.0;' & _ 'Data Source=' & _ ActiveWorkbook.Path + ' ' + ActiveWorkbook.Name & ';' & _ 'Extended Properties=Excel 8.0' 'HDR=Yes;' Set Rs = New ADODB.Recordset Rs.Open Source:='SELECT distinct ' & fldName & ' from ' & rngName, _ ActiveConnection:=cnn, _ CursorType:=adOpenDynamic, _ LockType:=adLockReadOnly, _ Options:=adCmdText ReDim Preserve aSel(0) ' инициализация массива aSel(0) = 0 ' 0-й элемент хранит размер массива i = 0 Rs.MoveFirst Do While Not Rs.EOF ReDim Preserve aSel(i + 1) aSel(UBound(aSel)) = Rs.Fields(fldName) Rs.MoveNext: i = i + 1 Loop aSel(0) = UBound(aSel) ' Rs.Close: cnn.Close: Set Rs = Nothing: Set cnn = Nothing End Function ' UnicSelect -->> | |
| | ||
| | #5 | |
| Korolana Форумчанин Регистрация: 27.08.2008
Сообщений: 147 Репутация: 0 (0) |
This way is right too, but much slower. Try it.
| |
| | ||
| | #6 | |
| maks_well Новичок Регистрация: 29.06.2008
Сообщений: 5 Репутация: 0 (0) |
Попробуй на скорость это По-моему алгоритм уже был когда-то на этом форуме Sub FormSpisok(ListName, FirstRow, NumColumn, Spisok) 'Формирует (в массив Spisok) список строк неповторяющихся значений из листа ListName в столбце NumColumn, начиная с ряда FirstRow 'Ограничение на листе-первое пустое значение 'Первое значение массива Spisok(0)-кол-во значений Dim numb As Integer Dim stroka As String Dim DataValues As New Collection ReDim Spisok(1) Spisok(0) = 0 stroka = Trim(Sheets(ListName).Cells(FirstRow, NumColumn)) On Error Resume Next Do While stroka <> '' DataValues.Add stroka, stroka FirstRow = FirstRow + 1 stroka = Trim(Sheets(ListName).Cells(FirstRow, NumColumn)) Loop On Error GoTo 0 numb = 1 For Each DataValue In DataValues ReDim Preserve Spisok(numb + 1) Spisok(numb) = DataValue numb = numb + 1 Next Spisok(0) = numb - 1 End Sub | |
| | ||
| | #7 | ||||||
| Serg_FSM Новичок Регистрация: 23.07.2008
Сообщений: 47 Репутация: 0 (0) |
Приветствую. Несколько измененый вариант, предложенный Короланой, извлекает уникальные значения из столбца с активной ячейкой:
| ||||||
| | |||||||
| | #8 | |
| wanton2 Новичок Регистрация: 25.01.2009
Сообщений: 14 Репутация: 0 (0) |
как уникальные найти я понял... а как отметить строки *дубликатов* каким - ниб. цветом??? можно найти unique-> Selection.покрасить-> ShowAllData-> если не закрашено, то закрасить своим цветом.... но если 4 дубликата, то незакр. будет 3!!! как сделать 'красиво'? что то я туплю мало-мало... ;-/ гуру, подскажите, плз! заранее, 10х! | |
| | ||
![]() |
| Похожие темы | |
| Тема | Автор |
| VBA VBA Excel Номер ваделенной колонки, получение номера выделенной колонки Как получить номер выделенной колонки, т.е. выделил колону 'С', а он мне выдал, колонка '3', а не 'C:C' Заранее спасибо | gas1979 |
| Visual Basic .NET Как получить уникальные значения оборудования компьютера Что в железе компьютера есть уникальное (серийный номер) и как это програмно получить? Пробовал с MAC-ом модема, но не на всех модемах можно получить его, странно почему то | Micro |
| Visual Basic Получить все уникальные значения массива Есть таблица 4х4, в ней 16 значений, из них от 2 до 8 уникальны, а остальные дублируют эти значения. Я пытаюсь вывести эти уникальные значения в текстовое поле, но что-то у меня не получается т.к. я проболел тему массивов :) Посмотрите, пожалуйста, и скажите, что я делаю не так. Dim a1...a16 as... | hukkfynn |
| VBA VBA Excel listbox уникальные значения Допустим у меня есть listbox1 12 32 32 12 12 4 6 | [JB] |
| PHP для начинающих Нужно получить все уникальные значения из поля MySQL. День добрый! Народ, подскажите, сложилась такая задача: нужно получить все уникальные значения из поля мускл? В пхп есть функция, которая это делает с массивами array_count_values(). Можно конечно и с её помощью решить мою задачу, но решил посоветоваться, может быть это можно как-то проще... | sl_play |
| Опции темы | Поиск в этой теме |
| | |
| Опции просмотра | |
| |
| Текущее время: 20:52. Часовой пояс GMT +4. |