电子表格公式dynamic转置第一列到第一行?

您好我正在试图使Excel 2013电子表格列出可能的项目组合。 我不确定是否有这种types的表名,除了一个matrix,但它看起来像这样(像一个孟德尔遗传学图):

ABCDE 1 Apple Banana Cherry 2 Apple Blue Orange Red 3 Banana Red Purple Brown 4 Cherry Green Red Maroon 5 

我会根据需要添加项目并手动填写组合结果。 我正在寻找一种方法来简单地在第一列的底部input一个新的项目,并自动显示在第一行的末尾。 例如,我会在单元格A5中input“date”,并且“date”也会在单元格E1中自动显示。

我试过简单的input

 =A2 

在单元格B1中,然后将该公式拖到第1行的右侧,而不是填入= A3,= A4,= A5等,它填充= B2,= C2,= D2等。感觉,默认情况下,但我不知道如何改变它。 我想也许TRANSPOSEfunction会帮助我,但我没有运气。

如果碰巧有更好的方法,我也愿意使用Google文档电子表格。

编辑:我也想到,也许有更好的方式来布局这种表。 我真的希望有一些默认模板内置到Excel的这种东西,有select灰色重复组合等

感谢您的任何build议。

B1试试这个公式,然后拖动到右边:

 =OFFSET(B1,COLUMN(B1)-1,-(COLUMN(B1)-1)) 

Google文档不太可能提供比Excel更好的function – 在当前状态下,function往往更糟糕。 如果您正在运行,并且无法访问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 

你会得到这样的东西:

例题

谷歌电子表格有一个简单的function,这很容易:在单元格B1,input:=转置(A2:A100)

这就对了! (如果您打算有超过99行,请相应调整)