我不知道如何将我的问题表达成一个简单的问题,对不起!
我有一个电子表格,格式不正确,不适合我需要做的事情。

如你所见,每一行是一种鱼,而列是一个独特的横断面,由(a)年,(b)地点,(c)珊瑚礁带和最后(d)重复数组成。重叠上的数字是该物种在该特定样带中被记录的次数。
我想要做的是生成一个新的表格,其中原始电子表格上的每条鱼的记录都是一整行。这将给出一个电子表格,其中记录的每条鱼现在都有自己的线,它看起来像这样:

除了基本的Excel之外,我几乎不了解任何其他东西,所以对此提供任何帮助都将不胜感激!
发布于 2019-11-13 04:38:12
Const startRow As Integer = 5
Const newSheet As String = "TransposedData"
Sub makeDownwards()
   Dim row As Integer, ws As Worksheet, ows As Worksheet
   Dim oRow As Integer, col As Integer, repNumber As Integer, i As Integer
   Dim fName As String, sName As String, year As String, site As String, none As String, transect As String
   row = startRow
   Set ws = ActiveSheet
   Set ows = ThisWorkbook.Worksheets.Add(after:=ActiveSheet)
   ows.Name = newSheet
   oRow = 2
   ows.Range("A1").Resize(1, 6) = Split("Fish Name ,Fish Spicies ,Year ,Site ,None ,Transect", ",")
   ows.Range("A1:F1").Font.Bold = True
   ows.Range("A1:F1").BorderAround xlContinuous, xlThin
   ows.Range("A1:F1").HorizontalAlignment = xlCenter
   Do While (ws.Cells(row, 1) <> "")
      row = row + 1
      col = 3
      fName = ws.Cells(row, 1)
      sName = ws.Cells(row, 2)
      Do While ws.Cells(1, col) <> ""
         repNumber = ws.Cells(row, col).Value
         year = ws.Cells(1, col)
         side = ws.Cells(2, col)
         none = ws.Cells(3, col)
         transect = ws.Cells(4, col)
         For i = 1 To repNumber
            ows.Range("A" & oRow).Resize(1, 6) = Array(fName, sName, year, side, none, transect)
            oRow = oRow + 1
         Next
         col = col + 1
      Loop
   Loop
End Subhttps://stackoverflow.com/questions/58783220
复制相似问题