- ·上一篇:电子表格excel表格中怎样把日期按星期递增
- ·下一篇:电子表格excel中table键怎么设置
电子表格excel 一对多 改成 一对一
1.excel 一对多 改成 一对一
如图所示,A、B列为原始数据,C、D列为中间结果,E、F列为最终结果。
C2、D2、E2、F2分别为: 1 =B2 =A2 =IF(D2="",B3,IF(ISERROR(FIND(",",D2)),D2,LEFT(D2,FIND(",",D2)-1))) C3、D3、E3、F3分别为: =IF(ISERROR(FIND(",",D2)),C2+1,C2) =IF(ISERROR(FIND(",",D2)),INDEX(B$2:B$23,IF(ISERROR(FIND(",",D2)),C2+1,C2)),RIGHT(D2,LEN(D2)-FIND(",",D2))) =INDEX(A$2:A$23,IF(ISERROR(FIND(",",D2)),C2+1,C2)) =IF(D3="",B4,IF(ISERROR(FIND(",",D3)),D3,LEFT(D3,FIND(",",D3)-1))) C、D、E、F列的其它行的公式可以从第三行直接拉下来复制(选中C3、D3、E3、F3,鼠标放到拖拉选中区域右下角的小黑方块上,变成+号,向下拖拉,直到最后一个数据显示出来) 其中的A$2:A$23和B$2:B$23是原始数据的区域 。
2.excel 一对多 改成 一对一 搜狗问问
如图所示,A、B列为原始数据,C、D列为中间结果,E、F列为最终结果。
C2、D2、E2、F2分别为:
1
=B2
=A2
=IF(D2="",B3,IF(ISERROR(FIND(",",D2)),D2,LEFT(D2,FIND(",",D2)-1)))
C3、D3、E3、F3分别为:
=IF(ISERROR(FIND(",",D2)),C2+1,C2)
=IF(ISERROR(FIND(",",D2)),INDEX(B$2:B$23,IF(ISERROR(FIND(",",D2)),C2+1,C2)),RIGHT(D2,LEN(D2)-FIND(",",D2)))
=INDEX(A$2:A$23,IF(ISERROR(FIND(",",D2)),C2+1,C2))
=IF(D3="",B4,IF(ISERROR(FIND(",",D3)),D3,LEFT(D3,FIND(",",D3)-1)))
C、D、E、F列的其它行的公式可以从第三行直接拉下来复制(选中C3、D3、E3、F3,鼠标放到拖拉选中区域右下角的小黑方块上,变成+号,向下拖拉,直到最后一个数据显示出来)
其中的A$2:A$23和B$2:B$23是原始数据的区域
3.Excel里如何实现数据一对多的生成
这是一个数学问题,假设有3列数据,A,B,C列,集合元素分别为3,4,5,则最小公倍数为3*4*5=60,操作方法就是A列选中A1-A3,下拉填充到A60;B列选中B1-B4,下拉填充到B60;C列选中C1-C5,下拉填充到C60。这时得到的就是你要的结果。可用筛选,验证一下。
-----------------------------------------------
总的来说,就是各集合元素个数的乘积,用这个数求出每个集合循环的步长。反过来说,就是每一列元素在这个乘积的范围之内要循环几次。做法就是让类别在27行内循环一次(mod(int(row(a1)/9,3)让型号在27行内循环三次(mod(int(row(a1)/3,3),让规格在27行内循环九次(mod(int(row(a1)/1,3)。用INDEX函数类别=INDEX($A$2:$A$4,MOD(INT((ROW(A1)-1)/9),3)+1,0);型号=INDEX($B$2:$B$4,MOD(INT((ROW(A1)-1)/3),3)+1,0);规格=INDEX($C$2:$C$4,MOD(INT((ROW(A1)-1)/1),3)+1,0);下拉填充,就可以了。
4.excel 一对一改成一对多
Private Sub Worksheet_Change(ByVal Target As Range)If Target.Column <> 1 Then Exit Sub Dim d, arr, i Set d = CreateObject("Scripting.Dictionary") arr = Sheets("Sheet1").UsedRange.Value For i = 2 To UBound(arr) If arr(i, 1) <> "" Then d(arr(i, 1)) = "" Next With Target .Offset(, 1) = Join(d.keys, ",") End With Set d = NothingEnd Sub。
5.Excel 如何实现一对多的转置
这个需要数组公式解决了
首先对A列使用高级筛选 选择不重复记录,复制至其他位置 选择C1 确定
然后D1输入公式 =IF(ISERR(INDEX($B$1:$B$100,***ALL(IF($A$1:$A$100=$C1,ROW($1:$100),""),COLUMN(A1)),1)),"",INDEX($B$1:$B$100,***ALL(IF($A$1:$A$100=$C1,ROW($1:$100),""),COLUMN(A1)),1))
CTRL SHIFT 回车结束,向右填充后向下填充,
