右 - 这是一个棘手的词组,因此我将使用几个图像来帮助我。Excel公式根据其他变量空出范围
在A栏和B栏中列出了球队名称和每个球队的球员人数。
D列包含所需的输出。
我需要一个公式,将其插入到单元格D2中,并将其拖至列B的总数中,以返回团队名称 - 但至关重要的是,以允许其下的多个行返回空白。下面的空行数量实际上等于1 - 该团队中的玩家数量。
我已经给它一些思考,但不能拿出一个合适的公式。有任何想法吗?
也欢迎提出更好的标题建议。
右 - 这是一个棘手的词组,因此我将使用几个图像来帮助我。Excel公式根据其他变量空出范围
在A栏和B栏中列出了球队名称和每个球队的球员人数。
D列包含所需的输出。
我需要一个公式,将其插入到单元格D2中,并将其拖至列B的总数中,以返回团队名称 - 但至关重要的是,以允许其下的多个行返回空白。下面的空行数量实际上等于1 - 该团队中的玩家数量。
我已经给它一些思考,但不能拿出一个合适的公式。有任何想法吗?
也欢迎提出更好的标题建议。
以下VBA函数将完全按照您的要求进行操作。让我知道它的任何部分是不是很清楚。
Sub teamRows()
Dim colDRowNumber As Integer
Dim i As Integer
Dim teamName As String
Dim numberOfRows As Integer
Dim HowFar As Integer
' Loop through the teams in column A
HowFar = Application.WorksheetFunction.CountA(Range("A:A"))
' Variable to keep count of rows in column D
colDRowNumber = 2
For i = 2 To HowFar
' Get the team's name and number of rows
teamName = Range("A" & i).Value
numberOfRows = Range("B" & i).Value
' Fill in the team's name in column D
Range("D" & colDRowNumber).Value = teamName
' Increase the row number by the number of empty rows required
colDRowNumber = colDRowNumber + numberOfRows
Next i
End Sub
一个复杂但短暂的尝试 - 我想避免循环。下面
例适用于A2到A20
y = Split(Join(Application.Transpose(Application.Evaluate("=index(substitute(substitute(substitute(REPT(A2:A20 &"","",B2:B20),A2:A20&"","",""X"",1),A2:A20,""""),""X"",A2:a20),0,1)")), ","), ",")
[d2].Resize(UBound(y)) = Application.Transpose(y)
你可以使用VBA呢? – NavkarJ
我不会反对它,我想,只是认为一个公式可能会更好。 –
我认为一个公式,如果可能的话,会太复杂。相反,去一个VBA功能。 – NavkarJ