![]() |
|
#1
|
|||
|
|||
|
I have a worksheet with 12 people in column A and weekly date periods in row 1 for the column headings. I want to populate the worksheet with the 18 tasks that are stored in worksheet 2. I would like these tasks to snake through the columns and repeat sequentially until all 12 people and all 10 date ranges (120 cells total) is filled. I have attached an image to help clarify what I am trying to do.
I used an array to populate the tasks. I have a For loop for the total number of iterations, 120 in my situation. I am stuck on how to proceed and can't wrap my mind on the code I need to make this work. Do I need to use a two-dimensional array. Maybe an array within an array or something else? Thanks for any help. Code:
Sub GenerateWeeklyTasks()
Dim Tasks() As String, nbrTasks As Integer, i As Integer, j As Integer, _
rngPeople As Range, nbrPeople As Integer, nbrDateRanges As Integer, _
rngDateRange As Range, nbrIterations As Integer, t As Integer, z As Integer
i = 1 'initialize the x coordinate of the Cells function to start in cell B2
j = 1 'initialize the y coordinate of the Cells function to start in cell B2
t = 1 'Initialize the index for the Tasks array
z = 1 'initialize the counter variable for the total number of iterations
'count the number of people to assign tasks to
Set rngPeople = Worksheets(1).Range("A2", Range("A2").End(xlDown))
nbrPeople = rngPeople.Count
nbrTasks = WorksheetFunction.CountA(Worksheets(2).Columns(1))
'count the number of date ranges
Set rngDateRange = Worksheets(1).Range("B1", Range("B1").End(xlToRight))
nbrDateRanges = rngDateRange.Count
nbrIterations = nbrDateRanges * nbrPeople
'Resize the array
ReDim Tasks(nbrTasks)
'Populate the array
For t = 1 To nbrTasks
Tasks(t) = Worksheets(2).Cells(i, j).Value
Debug.Print Tasks(t)
i = i + 1
Next t
'populate the worksheet
For z = 1 To nbrIterations
' Code goes here
Next z
End Sub
|
|
#2
|
|||
|
|||
|
|
|
#3
|
|||
|
|||
|
Post a copy of your workbook
|
|
#4
|
|||
|
|||
|
I took a different approach and used a nested FOR loop to complete my project. I have also attached the workbook to this post so others can follow along.
Code:
Sub AssignTasks()
Dim namesRange As Range
Dim tasksRange As Range
Dim taskIndex As Integer
Dim rowIndex As Integer
Dim colIndex As Integer
Dim taskCell As Range
' Define the ranges
Set namesRange = Worksheets(1).Range("A2:A13")
Set tasksRange = Worksheets(2).Range("A1:A18")
' Initialize the task index
taskIndex = 1
' Loop through the columns (dates)
For colIndex = 2 To 11 ' B to K (2 to 11)
' Loop through the names
For Each taskCell In namesRange
' Assign task to the cell
taskCell.Offset(0, colIndex - 1).Value = tasksRange.Cells(taskIndex, 1).Value
' Update the task index
taskIndex = taskIndex + 1
' Reset the task index if it exceeds the number of tasks
If taskIndex > tasksRange.Rows.Count Then
taskIndex = 1
End If
Next taskCell
Next colIndex
End Sub
|
|
| Thread Tools | |
| Display Modes | |
|
|
Similar Threads
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| Using a macro with if statement to populate a list from one worksheet to another | clcummings | Excel | 2 | 04-10-2023 08:53 PM |
| How to populate a dropdown list with a spcific column in a specific worksheet | ericliu24 | Word VBA | 2 | 03-17-2022 05:24 AM |
How to populate a userform combobox from an excel worksheet
|
jrooney7 | Word VBA | 14 | 09-16-2018 08:52 PM |
| How do I populate Worksheets using information entirely from another Worksheet in the same Workbook? | BrieDanielle | Excel | 1 | 06-18-2016 10:50 AM |
| Userform calls other userform, then populate worksheet | Lehoi | Excel Programming | 0 | 02-03-2016 02:58 PM |