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

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

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

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

Найти чётные числа, делящиеся без остатка на сумму своих цифр из заданного с клавиатуры диапазона
Private Sub Command1_Click() Dim a As Long, b As Long, c As Long Dim i As...

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

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

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

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

8
Казанский
14152 / 5851 / 1535
Регистрация: 24.09.2011
Сообщений: 9,189
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
Казанский
14152 / 5851 / 1535
Регистрация: 24.09.2011
Сообщений: 9,189
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
Казанский
14152 / 5851 / 1535
Регистрация: 24.09.2011
Сообщений: 9,189
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
Казанский
14152 / 5851 / 1535
Регистрация: 24.09.2011
Сообщений: 9,189
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

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

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

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


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

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

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