发布网友 发布时间:2022-04-24 01:24
共3个回答
热心网友 时间:2023-10-18 07:25
用公式是一个很难度的问题,而且是把数据引用到多行,按提问所说,有14列数据,提取后分布在4列中,如果全不为0,就得3行才放下。另外提问说是I-V列,实际应该是J-W列。
如图:
A3=IFERROR(INDEX($J$1:$W$1,SMALL(IF(SUBTOTAL(9,OFFSET($I$1,MATCH($F$1,$I$2:$I$7,),COLUMN($A:$N))),COLUMN($A:$N)),COLUMN(A:A)+(ROW(1:1)-1)*2)),"")
同时按Ctrl+Shift+Enter三键输入数组公式
A4=IFERROR(INDEX($J$2:$W$7,MATCH($F$1,$I$2:$I$7,),SMALL(IF(SUBTOTAL(9,OFFSET($I$1,MATCH($F$1,$I$2:$I$7,),COLUMN($A:$N))),COLUMN($A:$N)),COLUMN(A:A)+(ROW(1:1)-1)*2)),"")
同样三键数组公式。
选择A3:A4,一直右拉到D3:D4,再选择A3:D4,复制后,粘贴到A5:D6和A7:D8
热心网友 时间:2023-10-18 07:26
'自定义公式-按ALT+11-插入-模块(范围找字)
Function 范围找字(a As Range, c As String, b As String, Optional ByVal numformat As String = "0")
Dim j As Integer
For i = 1 To a.Rows.Count
If i > 1 And a.Cells(i, 1) = "" Then Exit For
If InStr(c, a.Cells(i, 1)) > 0 And a.Cells(i, 1) <> "" Then
For j = 2 To a.Columns.Count
If a.Cells(i, j) > 0 And a.Cells(i, j) <> "" And InStr(t, a.Cells(i, j)) = 0 Then
t = t & "|" & a.Cells(i, j)
n = n & "|" & a.Cells(1, j)
End If
Next
End If
Next
m = Split(Right(t, Len(t) - 1), "|", -1, 1)
k = Split(Right(n, Len(n) - 1), "|", -1, 1)
If b - 1 > UBound(m) Then
范围找字 = ""
Else
If numformat <> 0 Then
范围找字 = k(b - 1)
Else
范围找字 = m(b - 1)
End If
End If
End Function
热心网友 时间:2023-10-18 07:26
公式不方便就用代码。