Генерация до X числа значений на основе формулы - PullRequest
0 голосов
/ 24 апреля 2020

table,th,td { border: 1px solid #ccc; font-family: Arial, sans-serif; }
th { background: #eee; }
th, td { padding: 5px 10px; }
th
<table cellspacing="0">
<tr>
<th></th>
<th>A</th>
<th>B</th>
<th>C</th>
</tr>
<tr>
<th>1</th>
<td>donkey</td>
<td>4</td>
<td>donkey; donkey-2; donkey-3; donkey-4</td>
</tr>
<tr>
<th>2</th>
<td>cow</td>
<td>3</td>
<td>cow; cow-2; cow-3</td>
</tr>
<tr>
<th>3</th>
<td>chicken</td>
<td>5</td>
<td>chicken; chicken-2; chicken-3; chicken-4; chicken-5</td>
</tr>
</table>

Я хочу автоматически сгенерировать столбец C на основе значений в столбцах A и B. Количество выходов в столбце C по существу зависит от значения в B (которое может достигать 10).

Обратите внимание, что первый экземпляр результата без -num в конце.

Возможно ли это в Excel

Ответы [ 2 ]

1 голос
/ 24 апреля 2020

Как уже упоминалось @JdV, это также может быть достигнуто в VBA:

Sub sAddValue()
    Dim lngLast As Long
    Dim lngRow As Long
    Dim lngLoop1 As Long
    Dim strOutput As String
    lngLast = Cells(Rows.Count, "A").End(xlUp).Row
    For lngRow = 1 To lngLast
        If Cells(lngRow, 2) = 1 Then
            Cells(lngRow, 3) = Cells(lngRow, 1)
        Else
            strOutput = Cells(lngRow, 1)
            For lngLoop1 = 2 To Cells(lngRow, 2)
                strOutput = strOutput & ";" & Cells(lngRow, 1) & "-" & lngLoop1
            Next lngLoop1
            Cells(lngRow, 3) = strOutput
        End If
    Next lngRow
End Sub

С уважением,

1 голос
/ 24 апреля 2020

Вы пометили Excel-Formula, поэтому попробуйте следующее:

enter image description here

Формула в B1:

=SUBSTITUTE(TEXTJOIN("; ",1,A1&"-"&ROW(A$1:INDEX(A:A,B1))),"-1","",1)

использование параметра Instance в SUBSTITUTE обеспечит замену только первого экземпляра -1 на "".

Это также легко сделать через VBA.

Примечание: Это формула массива, которую необходимо подтвердить с помощью Ctrl Shift Enter

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...