Форум программистов, компьютерный форум, киберфорум
Наши страницы
VBA
Войти
Регистрация
Восстановить пароль
 
vetal21
17 / 0 / 1
Регистрация: 08.10.2012
Сообщений: 61
#1

функция возвращающая 2-ва столбца слов (без повторений) из заданного диапазона - VBA

24.07.2015, 08:55. Просмотров 324. Ответов 8
Метки нет (Все метки)

Написать функцию , аргументом является диапазон, содержащий имена без повторений. Перед вызовом функции пользователь выделяет свободный диапазон рабочего листа, состоящий из двух столбцов и нескольких строк, функция вводится как формула массива (CTRL+SHIFT+ENTER) и возвращает два столбца имен без повторений, имена выбираются из диапазона, который задан в качестве аргумента функции.

http://www.cyberforum.ru/vba/thread403807.html

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.07.2015, 08:55
Я подобрал для вас темы с готовыми решениями и ответами на вопрос функция возвращающая 2-ва столбца слов (без повторений) из заданного диапазона (VBA):

Генератор случайных чисел из заданного диапазона без повторений
Помогите найти генератор случайных чисел из заданного диапазона без повторений...

Функция, возвращающая х случайных, не равных друг другу, чисел из диапазона от y до z
Нужна функция желательно на разных языках (С, С++, perl, php) которая бы...

Выбрать из диапазона числа без повторений
Есть диапазон, к примеру, от 1 до 100. Нужно выбрать ровно 100 чисел без...

Функция возвращающая абсолютное разницу первого и второго параметров и функция типа int, возвращающая минимальное из трех целых чисел
Разработать заданные согласно условия функции и сделать в главной программе по...

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

8
Казанский
13864 / 5627 / 1430
Регистрация: 24.09.2011
Сообщений: 8,832
24.07.2015, 09:03 #2
vetal21, приложите файл, содержащий данные (с повторениями), которые можно использовать как аргумент функции.
0
vetal21
17 / 0 / 1
Регистрация: 08.10.2012
Сообщений: 61
24.07.2015, 09:14  [ТС] #3
вот файл
0
Вложения
Тип файла: xlsx запара.xlsx (11.9 Кб, 3 просмотров)
vetal21
17 / 0 / 1
Регистрация: 08.10.2012
Сообщений: 61
24.07.2015, 09:19  [ТС] #4
то что то за ночь не придумал не чего
0
Казанский
13864 / 5627 / 1430
Регистрация: 24.09.2011
Сообщений: 8,832
24.07.2015, 09:47 #5
Лучший ответ Сообщение было отмечено vetal21 как решение

Решение

vetal21,
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
Function Vetal21(arg As Range)
Dim i As Long, x, cl As New Collection
On Error Resume Next
For Each x In Intersect(arg, arg.Worksheet.UsedRange).Value
  cl.Add x, CStr(x)
Next
ReDim v(0 To Application.Caller.Rows.Count - 1, 0 To 1) As String
For Each x In cl
  v(i \ 2, i Mod 2) = x
  i = i + 1
Next
Vetal21 = v
End Function
1
Вложения
Тип файла: xls запара.xls (42.0 Кб, 4 просмотров)
vetal21
17 / 0 / 1
Регистрация: 08.10.2012
Сообщений: 61
24.07.2015, 09:58  [ТС] #6
примного благодарен. а возможно осуществить такое, чтобы имена выбирались из аргумента и так же без повторений выводились но "рандомно".
0
Казанский
13864 / 5627 / 1430
Регистрация: 24.09.2011
Сообщений: 8,832
24.07.2015, 10:07 #7
Это уж сами. Почитайте F1 - Collection.Add Method, используйте аргументы Before и After случайным образом.
0
vetal21
17 / 0 / 1
Регистрация: 08.10.2012
Сообщений: 61
24.07.2015, 10:13  [ТС] #8
спасибо, осталось только разобраться в коде=))
0
Казанский
13864 / 5627 / 1430
Регистрация: 24.09.2011
Сообщений: 8,832
24.07.2015, 15:16 #9
Лучший ответ Сообщение было отмечено vetal21 как решение

Решение

Дописал рандом. После изменения кода обновите ввод функции в диапазон, потом зажмите F9 и наблюдайте броуновское движение
Visual Basic
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
Function Vetal21(arg As Range)
Dim i As Long, x, cl As New Collection
Application.Volatile
On Error Resume Next
Randomize
For Each x In Intersect(arg, arg.Worksheet.UsedRange).Value
  If cl.Count Then
    i = Int(Rnd * (cl.Count + 1))
    If i Then
      cl.Add x, CStr(x), After:=i
    Else
      cl.Add x, CStr(x), Before:=1
    End If
  Else
    cl.Add x, CStr(x)
  End If
Next
i = 0
ReDim v(0 To Application.Caller.Rows.Count - 1, 0 To 1) As String
For Each x In cl
  v(i \ 2, i Mod 2) = x
  i = i + 1
Next
Vetal21 = v
End Function
1
24.07.2015, 15:16
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.07.2015, 15:16
Привет! Вот еще темы с решениями:

Функция, возвращающая количество одинаковых слов в строках, переданных параметрами
Помогите пожалуйста!!! Напишите функцию в Паскале, которая принимает в качестве...

Функция, возвращающая номер самого правого вхождения заданного символа во введенную строку
Нужна помощь в составлении программы: возвращающую номер самого правого...

Вывод слов из mysql без повторений
Здравствуйте, помогите пожалуйста вывести информацию из бд без повторов ...

Вывод слов из массива без повторений
В двумерном массиве char хранятся слова одинаковой длины, мне их нужно вывести...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru