电子表格公式将第1列动态转换为第1行?

时间:2013-09-05 00:38:05

标签: excel google-sheets spreadsheet

您好我正在尝试制作一个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中的默认模板用于此类事情,可以选择灰色复制组合等。

感谢您的任何建议。

3 个答案:

答案 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

你会得到这样的东西:

Example2

答案 2 :(得分:0)

Google Spreadsheets有一个简洁的功能,可以更轻松地完成这项工作: 在单元格B1上,输入: =转置(A2:A100)

就是这样! (如果您计划有超过99行,请相应调整)