-2
A
回答
0
尝试使用VBA:
Sub TransformTbl()
Dim i As Long, j As Long, cnt As Long
With ActiveSheet
.Range("G1:I1") = Array("Date", "Event", "Place")
cnt = 1
For j = 2 To 4 'column
For i = 2 To 5 'row
If Len(.Cells(i, j)) <> 0 Then
cnt = cnt + 1
.Cells(cnt, 7) = .Cells(1, j) 'Date
.Cells(cnt, 8) = .Cells(i, j) 'Event
.Cells(cnt, 9) = .Cells(i, 1) 'Place
End If
Next i
Next j
End With
End Sub
0
我写了一个解决方案,它适用于我。该公式非常复杂,可能很难理解。虽然我会尽我所能解释它,但更新公式可能仍然是一项艰巨的工作。所有这三个公式都写入数组公式,按Ctrl + Shift + Enter结束。
公式在G6:
=IFERROR(OFFSET($A$5,0,SMALL(
IF($B$6:$D$9<>"",1,99999999)*(COLUMN($B$6:$D$9)-1),ROW(A1))),"")
外IFERROR保持从任何#ERR您的工作表。用于调用正确日期的OFFSET。 SMALL内部的公式会生成一个规则数组:如果有事件,则该值为偏移日期的数字,否则为99999999,给OFFSET一个错误并被IFERROR阻塞。随着你给的数据,该阵列将
{ 1,99999999, 3;
1, 2,99999999;
1,99999999,99999999;
99999999,99999999, 3 }
公式在H6:
=IFERROR(OFFSET($A$5,
SMALL(IF($B$6:$D$9<>"",ROW($B$6:$D$9)-5)*
IF(COLUMN($B$6:$D$9)=MATCH(G6,$B$5:$D$5,0)+1,1,99999999),99999999),COUNTIF($G$6:G6,G6)),
MATCH(G6,$B$5:$D$5,0)),"")
的IFERROR和OFFSET工作方式相同G6。在OFFSET.ROW式产生几乎相同的阵列G6。这次的值是由列G确定的日期的行。其他给出999999999或更多。
公式在I6:
=IFERROR(OFFSET($A$5,MAX((ROW($B$6:$D$9)-5)*($B$6:$D$9=H6)*
(COLUMN($B$6:$D$9)=MATCH(G6,$B$5:$D$5,0)+1)),0),"")
IFERROR和OFFSET仍然是相同的。而这个时候只有事件的日期和本身的名称相匹配具有值,其他保持为0
最后,我为穷人可读性道歉。希望有人能帮助我这个:]
相关问题
- 1. Excel VBA函数将所有数据返回到新工作表
- 2. asp.net - 阅读Excel工作表的名称不返回数据表
- 3. 将所有工作表数据复制到另一个Excel表格的脚本
- 4. 基于另一个列表替换数据框中的所有名称
- 5. 函数返回一个工作表名称不再工作
- 6. VBA:将所有数据复制到另一个工作簿的工作表
- 7. 将相同列标题名称添加到Excel工作簿中的所有工作表
- 8. Excel公式:在另一个工作表中找到单元格值并返回它所在列的标题
- 9. VBA基于另一个工作表在一个工作表中更新Excel列
- 10. 将列从一个Excel工作表复制到另一个Excel工作表
- 11. 将数据从一个excel工作簿复制到另一个
- 12. Excel中:从单元格的值在另一个工作表名称表标签
- 13. 将许多excel工作簿的数据复制到另一个excel工作簿
- 14. Excel - 如何根据唯一的列标题名称填充另一个工作表中的列
- 15. 将数据从工作表中的行复制到另一个基于数量选择的工作表
- 16. Excel - 基于单元名称的几个工作簿的重要数据的宏
- 17. 基于另一个值返回Excel函数信
- 18. 将多个Excel工作表合并到单个数据框中,工作表名称为第一列,R
- 19. 从一个工作表到另一个工作表的数据
- 20. 如何有条件地将数据行从一个Excel工作表复制到另一个工作表
- 21. 从另一个工作表返回特定值的Excel代码
- 22. Excel:将数据从一个工作表传输到另一个工作表上的下一个空行错误
- 23. C# - Microsoft.Office.Interop.Excel将excel中的所有行复制到另一个工作表
- 24. Powershell:将数据从一个Excel工作簿复制到另一个工作簿
- 25. 循环遍历worhsheet excel vba并在另一个工作表上返回数据
- 26. 将返回的数据附加到基于对象名称的不同元素
- 27. 需要一个脚本来将数据从一个Excel工作表传输到另一个工作表
- 28. 将整个工作表从一个Excel复制到另一个
- 29. 将数据重新格式化为另一个Excel工作表
- 30. 更改基于细胞的所有谷歌表工作表的名称中的每个工作表
,你能否告诉我们到目前为止你已经尝试了什么?另见https://stackoverflow.com/help/mcve –