Esta é a macro que deve fazer o que você deseja. Isso:
- Solicita o número de fundos
- Pressupõe que a tabela de dados começa em
A1
- imprime em "Folha2" nas colunas
A
aC
- Encerra se encontrar uma célula vazia na coluna
date
Observação: se "Sheet2" não existir, a macro falhará, portanto, crie-a. Além disso, você precisará colocar os cabeçalhos na "Planilha2" e ajustar o formato da célula para datas e valores em "Planilha2"
ajustar conforme necessário
Sub wolfeline()
Dim c As Range
Dim k As Integer
Dim x As Integer
Dim y As Integer
Dim WScurr As Worksheet
Dim WStarg As Worksheet
'Set current and target WS
'//Note: target WS must exist already
Set WScurr = ActiveSheet
Set WStarg = Sheets("Sheet2")
'k=2 so we start on row 2, below the headers you've put, adjust as needed
k = 2
'count the range of dates
y = [counta(A:A)]
'Ask user to input number of funds
x = InputBox("Number of Funds?")
'Feel free to define range("A:A") to your actual range e.g. range("A2:A100")
For Each c In WScurr.Range("A2:A" & y)
If c.Value = "" Then Exit Sub
' "to 3" indicates there are 3 funds, adjust as needed
For i = 1 To x
If c.Offset(, i) <> "" Then
'we're printing this in columns K, L and M, adjust as needed
WStarg.Cells(k, "A") = c
WStarg.Cells(k, "B") = Cells(1, c.Offset(, i).Column)
WStarg.Cells(k, "C") = c.Offset(, i)
k = k + 1
End If
Next
Next
End Sub