У меня есть список продуктов в A2:A21 (A1:M1 - заголовок). За этими продуктами стоят имена 12 владельцев (B2:M21), которые могут ремонтировать эти продукты. НО ... не все владельцы могут отремонтировать каждый товар. Вот почему есть пустые клетки. Я хочу создать автоматический второй лист с тем же списком товаров, но теперь только ОДИН владелец, выбранный из доступных владельцев. Я также хотел бы, чтобы выбор был разделен на равные. Чтобы у всех владельцев было одинаковое количество товаров (или как можно ближе). Спасибо!
2 ответа
Скажем, мы начнем с:
Следующий макрос сначала копирует первый столбец на второй лист. Затем макрос начинается с первого продукта (сотовый телефон) и просматривает столбцы, начинающиеся со столбца B, в поисках "X". Когда "X" найден, владелец переносится на второй лист.
Макрос затем перемещается вниз ко второму продукту (зарядному устройству) и повторяет сканирование по столбцам. Но теперь он начинается со столбца C, а не столбца B ............ Это поможет равномерно распределить владельцев. Вот макрос:
Sub Owner()
Dim s1 As Worksheet, s2 As Worksheet
Dim i As Long, j As Long
Set s1 = Sheets("Sheet1")
Set s2 = Sheets("Sheet2")
s1.Range("A:A").Copy s2.Range("A1")
j = 2
For i = 2 To 21
loopit:
If s1.Cells(i, j) = "X" Then
s2.Cells(i, 2).Value = s1.Cells(1, j).Value
j = j + 1
If j = 14 Then j = 2
GoTo exloopit
Else
j = j + 1
If j = 14 Then j = 2
End If
GoTo loopit
exloopit:
Next i
End Sub
и вот пример выходного листа:
То, что вы описываете, представляет собой простую задачу линейного программирования (или целочисленного программирования). В Excel есть надстройка для Solver, которая по умолчанию отключена. Вы можете включить его в Excel Options > Add-Ins > Manage Excel Add-Ins (Go)
. Это добавит солвер к вашей ленте на вкладке Данные.
Ваша цель для решения будет максимизировать общее количество различных ремонтников. Ваши ограничения заключаются в том, может ли кто-либо ремонтировать определенный продукт, и что для каждого продукта требуется по крайней мере один ремонтник.
Чтобы узнать больше о том, как решатель работает, вы можете обратиться к Google, но этот урок выглядит хорошо для меня.