根据公式生成最多X个数值。

问题描述 投票:0回答:1

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>

我希望根据A列和B列中的值自动生成C列,C列中的输出数量基本上取决于B列中的值(可以高达10)。

请注意,结果的第一例是没有在最后加上-数字的。

在Excel中可以这样做吗?

excel excel-vba excel-formula
1个回答
1
投票

你贴了标签 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换挡进入


1
投票

正如@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

Regards,

© www.soinside.com 2019 - 2024. All rights reserved.