Alternativa en access a múltiplo. Superior de excel
Hasta donde yo sé no hay una función alternativa múltiplo. Superior de excel en access, por favor necesito algún código para crear la función para access.
1 Respuesta
Respuesta de Neckkito Nck
1
1
Neckkito Nck, Access... ser o no ser. Esa es la cuestión
No tenía ni idea de la existencia de esa función de Excel, por lo que acabo de aprender una cosa más. Gracias! ;) Bueno. He estado mirando qué hace esa función y te paso un código que acabo de hacer. Debes tener en cuenta que este código: - Sólo te funcionará con números enteros (no decimales) - Lo he estado testeando con los resultados que me da el Excel y no he tenido ningún error ni diferencia en los mismos, por lo que entiendo que funciona correctamente. De todas maneras no estaría de más que tú también testearas las "primeras experiencias", por si las moscas. Entiendo que si se capta la mecánica del código no creo que sea muy difícil operar con decimales, pero eso será para otra ocasión. He llamado Origen al primer número de la función de Excel, y Significativa al segundo número. Traducido vendría a ser, en Excel, =multiplo. superior(origen;significativa) Te paso la función: --- Public Function multsup(ByVal intOrigen As Integer, intSignificativa As Integer) As Integer Dim intSignificativaTmp As Integer Dim resto As Double Dim blnEncontrado As Boolean blnEncontrado = False resto = intOrigen Mod intSignificativa 'Si la división entre la origen y la significativa 'es exacta el resultado coincide con la origen, y 'además son múltiplos If resto = 0 Then blnEncontrado = True End If 'Asignamos una unidad más a la significativa a través 'de una significativaTmp intSignificativaTmp = intSignificativa + 1 'Ejecutamos el bucle Do While... Loop Do While blnEncontrado = False 'Cuando la significativaTmp sea mayor que el origen... If intSignificativaTmp > intOrigen Then 'Comprobación de si es múltiplo o no resto = intSignificativaTmp Mod intSignificativa If resto = 0 Then blnEncontrado = True Exit Do 'Si no lo es añade una unidad y sigue el proceso Else intSignificativaTmp = intSignificativaTmp + 1 End If Else 'La significativa sigue siendo más pequeña que el origen. 'Le añadimos una unidad intSignificativaTmp = intSignificativaTmp + 1 End If Loop 'Asignamos el valor encontrado a la función multsup = intSignificativaTmp End Function ---
Me acabo de dar cuenta de que en el código que te he pasado hay una tontería como un piano. Se puede simplificar bastante. Me ha pasado eso de "los árboles no te dejan ver el bosque". No cierres la consulta y en breve te paso el código simplificado. Sorry!
Creo que esta vez sí... --- Public Function multsup(ByVal intOrigen As Integer, intSignificativa As Integer) As Integer Dim intSignificativaTmp As Integer Dim resto As Double Dim blnEncontrado As Boolean blnEncontrado = False intSignificativaTmp = intOrigen resto = intOrigen Mod intSignificativa 'Si la división entre la origen y la significativa 'es exacta el resultado coincide con la origen, y 'además son múltiplos If resto = 0 Then blnEncontrado = True End If 'Ejecutamos el bucle Do While... Loop Do While blnEncontrado = False 'Comprobación de si es múltiplo o no resto = intSignificativaTmp Mod intSignificativa If resto = 0 Then blnEncontrado = True Exit Do Else intSignificativaTmp = intSignificativaTmp + 1 End If Loop 'Asignamos el valor encontrado a la función multsup = intSignificativaTmp End Function --- ;)
Buenas tardes y gracias por tu rapidez, más tarde hago mis pruebas y te informo. Saludos