Форум программистов, компьютерный форум, киберфорум
Наши страницы
VBA
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
timsc1
9 / 9 / 2
Регистрация: 27.11.2011
Сообщений: 615
1

Списки людей не должны повторяться

28.04.2013, 01:16. Просмотров 772. Ответов 10
Метки нет (Все метки)

Доброго времени суток!!! Есть задачка. Excel 2010. Есть список людей (156 штук, на самом деле их больше). Необходимо сформировать новые листы со списком по 15 человек. Распределить надо всех. Если остаётся мало человек, их всё равно на новый лист. Вопрос:
- как сформировать (добавить) много листов автоматически и сделать так, чтобы люди не повторялись на разных листах. Макрос с кнопкой на листе есть. Но люди повторяются. Файл прилагаю. Помогите пожалуйста. Спасибо заранее!!!

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

0
Вложения
Тип файла: xls Spiski.xls (52.5 Кб, 8 просмотров)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.04.2013, 01:16
Ответы с готовыми решениями:

Подставить вместо звездочек цифры из промежутка от 1 до 9. Числа не должны повторяться. **** / *** = **
Подставить вместо звездочек цифры из промежутка от 1 до 9. Числа не должны...

Создание массива из случайных целых чисел из определённого промежутка. Числа в массиве не должны повторяться
Здравствуйте! Недавно занялся Visual Basic'ом и столкнулся с такой проблемой....

Заполнить двумерный массив не повторяющимися числами. (Числа не должны повторяться в одной строке или столбце)
Заполнить двумерный массив не повторяющимися числами. (Числа не должны...

Динамические списки: при выборе элементов первого списка должны динамически формироваться элементы второго
на странице есть 2 связанных multiselect списка: при выборе элементов первого...

Удалить из первого списка все элементы других списков. Списки и их количество должны задаваться с командной строки
Даны несколько списков. Удалить из первого списка все элементы других списков....

10
ikki
призрак
2823 / 879 / 118
Регистрация: 11.05.2012
Сообщений: 1,702
Записей в блоге: 2
28.04.2013, 01:38 2
Цитата Сообщение от timsc1 Посмотреть сообщение
Макрос с кнопкой на листе есть.
чего-то вы недоговариваете...
зачем в этом макросе используется Rnd?
почему данные не разносятся по листам последовательно?
0
timsc1
9 / 9 / 2
Регистрация: 27.11.2011
Сообщений: 615
28.04.2013, 01:55  [ТС] 3
Люди должны выбираться случайно... Каюсь, не дописал.
0
ikki
призрак
2823 / 879 / 118
Регистрация: 11.05.2012
Сообщений: 1,702
Записей в блоге: 2
28.04.2013, 02:17 4
проверяйте
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Sub xyz()
  Dim lr%, a(), i%, n%, v%, ws As Worksheet
  
  With Worksheets("Лист1")
    lr = .Cells(.Rows.Count, 1).End(xlUp).Row
    a = .[a1].Resize(lr, 3).Value
  End With
  
  With New Collection
    For i = 1 To lr: .Add i, CStr(i): Next
    i = 15
    Do While .Count
      If i = 15 Then Set ws = Worksheets.Add: i = 0
      i = i + 1: n = Int(Rnd * .Count) + 1: v = .Item(n): .Remove n
      ws.Cells(i, 1) = a(v, 1): ws.Cells(i, 2) = a(v, 2): ws.Cells(i, 3) = a(v, 3)
    Loop
  End With
End Sub
1
timsc1
9 / 9 / 2
Регистрация: 27.11.2011
Сообщений: 615
28.04.2013, 02:26  [ТС] 5
Спасибо, друг!!! Дай Вам БОГ здоровья!!! И если не затруднит вопрос: В этом общем списке много разных людей, но с одинаковыми именами. Как сделать так, чтобы создавались листы по именам людей из списка. Например: там есть Оксаны, создаётся лист Оксана и туда копируются все Оксаны с фамилиями и отчествами. Так же для Андреев, Николаев и т.д. Помогите пожалуйста. второй день бьюсь, не получается.
0
ikki
призрак
2823 / 879 / 118
Регистрация: 11.05.2012
Сообщений: 1,702
Записей в блоге: 2
28.04.2013, 02:28 6
гм... вроде бы как совсем разные задачи...
или Оксаны тоже нужны вперемешку?
0
timsc1
9 / 9 / 2
Регистрация: 27.11.2011
Сообщений: 615
28.04.2013, 02:29  [ТС] 7
Люди в любом порядке, главное, чтобы все Оксаны в Оксаны, и т.д Каждый в свой лист...
0
ikki
призрак
2823 / 879 / 118
Регистрация: 11.05.2012
Сообщений: 1,702
Записей в блоге: 2
28.04.2013, 02:40 8
вариант немного "тупо в лоб"
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
Sub xyz2()
  Dim lr%, a(), i%, ws As Worksheet
  
  With Worksheets("Лист1")
    lr = .Cells(.Rows.Count, 1).End(xlUp).Row
    a = .[a1].Resize(lr, 3).Value
  End With
  
  For i = 1 To lr
    On Error Resume Next
    Set ws = Sheets(a(i, 2))
    If Err.Number > 0 Then
      Set ws = Worksheets.Add
      ws.Name = a(i, 2)
      Err.Clear
    End If
    With ws.Cells(ws.Rows.Count, 1).End(xlUp).Offset(1)
      .Value = a(i, 1)
      .Offset(, 1) = a(i, 2)
      .Offset(, 2) = a(i, 3)
    End With
  Next
End Sub
1
timsc1
9 / 9 / 2
Регистрация: 27.11.2011
Сообщений: 615
28.04.2013, 10:50  [ТС] 9
Спасибо Вам огромное!!! Остался последний штрих: как программно создать файл Excel в определённой папке по значению в ячейке, например по имени!!! Сможете помочь??? Спасибо ещё раз!!!
0
ikki
призрак
2823 / 879 / 118
Регистрация: 11.05.2012
Сообщений: 1,702
Записей в блоге: 2
28.04.2013, 10:54 10
timsc1, отправлю-ка я Вас.... в Поиск
такая задача ставилась, обсуждалась и успещно решалась много-много раз.
в том числе на этом форуме.
0
timsc1
9 / 9 / 2
Регистрация: 27.11.2011
Сообщений: 615
28.04.2013, 11:57  [ТС] 11
Искал, толком не получается... Но, всё равно спасибо Вам большое!!!!!
0
28.04.2013, 11:57
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.04.2013, 11:57

Списки аргументов переменной длины, эти аргументы должны быть исключительно типа "int"?
Действительно: #include <stdio.h> #include <stdarg.h> int foo (char*...

Как перевезти людей и львов с одного берега на другой так, чтобы львы не съели людей?
Как перевезти людей и львов с одного берега на другой так, чтобы львы не съели...

Вывести фамилии людей, живущих в разных городах по одинаковым адресам или сообщить, что таких людей нет
Задача:В файле содержаться адреса n человек. Вывести фамилии людей, живущих в...


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

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

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