Recorra una lista de Inversionistas y calcule la TIR para cada uno de ellos para automatizar el proceso.
Entonces, he estado atascado en este problema durante unos días. He revisado algunos códigos de otras personas pero sigo sin encontrar la solución. Tampoco soy muy bueno en VBA.
Tengo una lista de inversores con sus pagos y fechas adjuntas. Estoy intentando ejecutar un botón que recorra cada cuenta, encuentre sus pagos y fechas relacionadas, ejecute la función XIRR y luego coloque el valor de XIRR en la parte inferior a la derecha de cada cuenta. Esto es bastante simple de hacer a mano, pero cuando tienes una hoja de cálculo de más de 15000 celdas, se vuelve tedioso y estoy intentando automatizar este proceso. Se vuelve difícil porque cada inversor tiene diferentes cantidades de pago, por lo que encontrar la ubicación correcta para colocar el valor de XIRR también me ha dejado perplejo.
Aquí tienes un ejemplo de mi hoja de cálculo.
Dim i As Integer
Dim x As Double
Dim dateArray() As Date
Dim dateStrings() As String
Dim valArray() As Double
Redim dateArray(Dates.Count)
Redim valArray(Trans.Count)
Redim dateStrings(Dates.Count)
‘Sheets(“InvestorList”).PivotTables.GetPivotData(“Account”, “x”) = i
‘Sheets(“AccountPayments”).Find (“i”)
End Sub
Public Function MyXIRR(Dates As Range, Trans As Range, Balance As Double)
For i = 1 To Dates.Count
dateArray(i - 1) = Dates.Item(i).Value
Next i
For i = 1 To Trans.Count
valArray(i - 1) = Trans.Item(i).Value
Next i
'Establece la fecha en la línea "Balance" a un día después de la fecha de la última transacción
dateArray(Dates.Count) = DateAdd("d", 1, Dates.Item(Dates.Count))
valArray(Trans.Count) = -1 * Balance
For i = 0 To Dates.Count
dateStrings(i) = Format(dateArray(i), "mm/dd/yyyy")
Next i
MyXIRR = Application.WorksheetFunction.Xirr(valArray, dateStrings)
End Function
davy.ai
Basándose en la información proporcionada, parece que el problema principal es determinar la ubicación correcta para colocar el valor de XIRR para cada cuenta. Un enfoque podría ser utilizar VBA para recorrer cada fila y encontrar los pagos correspondientes para cada cuenta, luego calcular el XIRR y colocarlo en la celda correcta. Aquí hay un código de muestra que podría adaptarse para este propósito:
Este código recorre cada fila en la hoja “InvestorList” y hace lo siguiente:
MyXIRR
con los argumentos apropiados y obtiene el valor de XIRR.Ten en cuenta que este código asume que los números de cuenta están en la columna A de la hoja “InvestorList”, los saldos iniciales están en la columna B y los valores de XIRR deben colocarse en la columna C. Ajusta los rangos según sea necesario para adaptarse a tu diseño de hoja de cálculo específico.
¡Espero que esto ayude! Avísame si tienes alguna pregunta o necesitas más ayuda.