Fórmulas

Hola tengo otro problemilla results que tango que aplicar a dos columnas de excel la siguiente fórmula desde VB
="mmult(mmult(minverse(transpose(B1:C29));transpose(B1:C29));A1:A29)"
Si aplico así la fórmula funciona pero el problema es que el rango no es fijo depende de los datos que introduzca el usuario he intentado haciendo:
transpose(cells(1,1);cells(f,c)) pero no funciona.
Q puedo hacer???
Gracias. Saludos.LUz

1 respuesta

Respuesta
1
Creo que tu problema es que no sabes como preguntar el numero de columnas y filas que ha introducido el usuario, una solución es la siguiente:
Filas
= Range("A1").CurrentRegion.Rows.Count
Filas es una variable entera y donde pone "A1", pones una de las celdas que contiene los datos que quieres saber las filas, para saber las columnas es lo mismo pero en lugar de "Rows" es "Colums".
Hola gracias por lo del número de filas y columnas no sabía hacerlo así.
Lo q tampoco sé aplicar es la fórmula ="mmult(mmult(minverse(transpose(B1:C29));transpose(B1:C29));A1:A29)"
Ya que el rango no puedo ponerlo como A10:A29 que sí funciona sino que tendré que poner algo como
Range(cells(10,1),cells(10+filas,1) y cuando hago esto la fórmula no funciona.
¿Cómo puedo usar esta fórmula con rango variable?
Muchas gracias por la respuesta. Saludos. Luz
Te puedes crear una tabla de chars de la siguiente forma:
Dim columna() as string = {"A","B","C",...}
Dim filas as integer
Dim columnas as integer
filas = Range("A1").CurrentRegion.Rows.Count
columnas = Range("A1").CurrentRegion.Colums.Count
Range(columna(columnas) & filas)
Creo que esto es a lo que te refieres por que no entiendo bien a que te refieres con lo de como usar esta fórmula con rango variable.
Hola acabo de ver lo que me has dicho pero creo que eso no es lo que necesito te escribo los módulos que he hecho haber si me explico:
En primer lugar estos son los contadores tanto para filas como para columnas.
Sub contador()
Dim filas As Integer
Dim columnas As Integer
filas = 0
columnas = 0
For i = 10 To 1500
If Cells(i, 1).Value <> "" Then
filas = filas + 1
End If
Next i
For j = 2 To 11
If Cells(10, j).Value <> "" Then
columnas = columnas + 1
End If
Next j
Range("filas").Value = filas
Range("columnas").Value = columnas
End Sub
Hasta aquí bien, pero el módulo que viene no me sale por que en la celda en la que quiero que aparezca el resultado pone VALOR!
Sub regresion()
For j = 1 To Range("columnas").Value
If Cells(10, 2).Value = 1 Then
Cells(10, 12).Value = ("const")
Cells(j + 9, 12).Value = ("coe")
Else
Cells(j + 9, 12).Value = ("coe")
End If
Next j
Dim r1 As Range
Dim r2 As Range
Set r1 = Range(Cells(10, 1), Cells(Range("filas").Value + 9, 1))
Set r2 = Range(Cells(10, 2), Cells(Range("filas").Value + 9, Range("columnas").Value + 1))
r1.Value = Range(Cells(10, 1), Cells(Range("filas").Value + 9, 1)).Value
r2.Value = Range(Cells(10, 2), Cells(Range("filas").Value + 9, Range("columnas").Value + 1)).Value
Range(Cells(10, 13), Cells(Range("columnas").Value + 9, 13)).Select
Selection.FormulaArray = _
"=MMULT(MMULT(MINVERSE(MMULT(TRANSPOSE(r2.value),r2.value)),TRANSPOSE(r2.value)),r1.value)"
Sabes lo que tengo que hacer??
Siento el follon q stoi dando.
Saludos. Luz
Para ayudarte necesito que me ayudes tu primero, nunca he trabajado con rangos denominados en entonces no se como funcionan las instrucciones:
Range("filas").Value = filas
Range("columnas").Value = columnas
Si pudieras explicarme como funciona esto para poder probarlo, al ejecutarlo me da error en estas dos instrucciones.
Hola
Lo que he hecho es ponerme en excel selecciono una casilla por ejemplo la B1 entonces en la parte superior izquierda de excel pone el nombre de esa celda me pongo encima y cambio el nombre de la celda por el de filas, luego hago lo mismo con la celda B2 y la llamo columna(es decir asigno el nombre de filas y columnas a 2 celdas de excel, en vas de llamarlas B1 y B2). Luego abres VB desde VB para referirte al valor de una celda concreta de Excel se pone Range("filas"). value y lo igualo al contador q he hecho de filas desde VB q es la integer q tengo desde el programa.
Con esto lo que consigo es que en excel me salga una celdilla con el nº de filas y otra con el número de columnas. Pero no afecta directamente a la ejecución del programa. No sé si me he explicado...
Si no me comprendes haz esto ejecuta el módulo y ve a excel:
Range("B1").Value=filas
Range("B2").Value=columnas
Tampoco t dije que inicialmente tengo 3 columnas de datos numéricos en Excel A10:C29.
Muchas gracias.
Saludos.Luz
Lo siento no veo la manera de solucionar tú problema, por que no intentas consultar a otro experto,
siento no poder ayudarte.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas