Excel公式根据其他变量分隔范围

时间:2016-11-10 20:12:38

标签: excel excel-vba excel-formula vba

对 - 这是一个非常棘手的短语,所以我将使用几张图片来帮助我。

在列A和B中是团队名称和每个团队拥有的玩家数量的变化列表。

D列包含所需的输出。

我需要一个公式,插入到单元格D2中并向下拖动到B列的总数,以返回团队名称 - 但至关重要以允许返回多个行返回空白。下方空白行的数量实际上等于1 - 该团队中的玩家数量。

Excel formula to space out range depending on other variable

我已经考虑了一些,但无法想出合适的配方。有什么想法吗?

欢迎提出更好标题的建议。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

复杂但短暂的尝试 - 我想避免循环。

以下示例适用于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)