您好我正在尝试制作一个Excel 2013电子表格,其中列出了可能的项目组合。我不确定这种类型的表是否有一个名称,除了矩阵,但它看起来像这样(像孟德尔遗传图):
A B C D E
1 Apple Banana Cherry
2 Apple Blue Orange Red
3 Banana Red Purple Brown
4 Cherry Green Red Maroon
5
我将根据需要添加项目并手动填写组合结果。我正在寻找一种方法,只需在第一列底部输入一个新项目,并让它自动显示在第一行的末尾。例如,我将在单元格A5中输入“Date”,并且“Date”也会在单元格E1中自动显示。
我试过简单地输入
=A2
在单元格B1中,然后将该公式拖到第1行的右侧,但不是填入= A3,= A4,= A5等,而是填入= B2,= C2,= D2等。默认情况下,这种行为是有道理的,但我不知道如何更改它。我想也许TRANSPOSE功能会以某种方式帮助我,但我没有运气。
如果碰巧有更好的方法,我也愿意使用Google文档电子表格。
编辑:我也想到也许有更好的方法来布局这种表格。我真的希望有一些内置于Excel中的默认模板用于此类事情,可以选择灰色复制组合等。
感谢您的任何建议。
答案 0 :(得分:3)
在B1
中尝试此公式,然后向右拖动:
=OFFSET(B1,COLUMN(B1)-1,-(COLUMN(B1)-1))
答案 1 :(得分:0)
Google文档不太可能提供比Excel更好的功能 - 它的当前状态通常会有更糟糕的功能。如果您正在运行并且无法访问Excel或正在处理实时协作电子表格,那就太棒了。
如果您希望获得包含空白作为值且具有2个以上可能值的组合,则最好使用VBA。这来自http://www.mrexcel.com/forum/excel-questions/435865-excel-visual-basic-applications-combinations-permutations.html:
Sub PowerSetRept()
Dim vElements As Variant, vresult As Variant
Dim lRow As Long, i As Long
vElements = Application.Transpose(Range("A1", Range("A1").End(xlDown)))
Columns("C:Z").Clear
lRow = 1
For i = 1 To UBound(vElements)
ReDim vresult(1 To i)
Call CombinationsNP(vElements, i, vresult, lRow, 1, 1)
Next i
End Sub
Sub CombinationsNP(vElements As Variant, p As Long, vresult As Variant, lRow As Long, iElement As Long, iIndex As Long)
Dim i As Long
For i = iElement To UBound(vElements)
vresult(iIndex) = vElements(i)
If iIndex = p Then
lRow = lRow + 1
Range("C" & lRow).Resize(, p) = vresult
Else
Call CombinationsNP(vElements, p, vresult, lRow, i, iIndex + 1)
End If
Next i
End Sub
你会得到这样的东西:
答案 2 :(得分:0)
Google Spreadsheets有一个简洁的功能,可以更轻松地完成这项工作: 在单元格B1上,输入: =转置(A2:A100)
就是这样! (如果您计划有超过99行,请相应调整)