Jump to content

aelh01

Members
  • Content Count

    59
  • Joined

  • Last visited

About aelh01

  • Rank
    Advanced Member
  • Birthday 09/11/1981
  1. Buenos dias, Muchas gracias a todos los que visitaron este tema, y muchas mas a los que quizas esten trabajando en una solucion desde VBA. Les comento que logre solucionar el problema desde el mismo excel. Resulta que la celda cuyo valor me interesaba redondear contenia una funcion PROMEDIO la cual, por formato de celda, ya estaba disminuida de decimales a cero; a pesar de esto, excel seguia tomando el valor real de la celda, que era un numero decimal, sin embargo, anidando REDONDEAR.MAS con el PROMEDIO se obliga a excel a dar como resultado un numero entero o en su defecto con la cantidad de decimales que uno decida colocarle. Particularmente yo doy por SOLUCIONADO el tema, queda a criterio del admin si lo quiere mantener abierto en espera de otra posible solucion desde VBA. Saludos.
  2. Buenas tardes, Particularmente no sufro de ese problema con este codigo... Intenta a ver que tal te va... Function letra(NUMERO) Dim TEXTO Dim MILLONES Dim MILES Dim CIENTOS Dim DECIMALES Dim CADENA Dim CADMILLONES Dim CADMILES Dim CADCIENTOS Dim caddecimales TEXTO = Round(NUMERO, 2) TEXTO = FormatNumber(TEXTO, 2) TEXTO = Right(Space(14) & TEXTO, 14) MILLONES = Mid(TEXTO, 1, 3) MILES = Mid(TEXTO, 5, 3) CIENTOS = Mid(TEXTO, 9, 3) DECIMALES = Mid(TEXTO, 13, 2) CADMILLONES = CONVIERTECIFRA(MILLONES, False) CADMILES = CONVIERTECIFRA(MILES, False) CADCIENTOS = CONVIERTECIFRA(CIENTOS, True) caddecimales = ConvierteDecimal(DECIMALES) If Trim(CADMILLONES) > "" Then If Trim(CADMILLONES) = "UN" Then CADENA = CADMILLONES & " MILLON" Else CADENA = CADMILLONES & " MILLONES" End If End If If Trim(CADMILES) > "" Then If Trim(CADMILES) = "UN" Then CADMILES = "" CADENA = CADENA & "" & CADMILES & "MIL" CADMILES = "UN" Else CADENA = CADENA & " " & CADMILES & " MIL" End If End If If Trim(CADMILES) > "001" Then CADMILES = "MIL" End If If DECIMALES = "00" Then If Trim(CADMILLONES & CADMILES & CADCIENTOS & caddecimales) = "UN" Then CADENA = CADENA & "UNO " Else If MILES & CIENTOS = "000000" Then CADENA = CADENA & " " & Trim(CADCIENTOS) Else CADENA = CADENA & " " & Trim(CADCIENTOS) End If letra = Trim(CADENA) End If Else If Trim(CADMILLONES & CADMILES & CADCIENTOS & caddecimales) = "UN" Then CADENA = CADENA & "UNO " & "CON " & Trim(caddecimales) Else If MILLONES & MILES & CIENTOS & DECIMALES = "000000" Then CADENA = CADENA & " " & Trim(CADCIENTOS) Else CADENA = CADENA & " " & Trim(CADCIENTOS) End If letra = Trim(CADENA) End If End If End Function Function CONVIERTECIFRA(TEXTO, IsCientos As Boolean) Dim CENTENA Dim DECENA Dim UNIDAD Dim TXTCENTENA Dim TXTDECENA Dim TXTUNIDAD CENTENA = Mid(TEXTO, 1, 1) DECENA = Mid(TEXTO, 2, 1) UNIDAD = Mid(TEXTO, 3, 1) Select Case CENTENA Case "1" TXTCENTENA = "CIEN" If DECENA & UNIDAD <> "00" Then TXTCENTENA = "CIENTO" End If Case "2" TXTCENTENA = "DOSCIENTOS" Case "3" TXTCENTENA = "TRESCIENTOS" Case "4" TXTCENTENA = "CUATROCIENTOS" Case "5" TXTCENTENA = "QUINIENTOS" Case "6" TXTCENTENA = "SEISCIENTOS" Case "7" TXTCENTENA = "SETECIENTOS" Case "8" TXTCENTENA = "OCHOCIENTOS" Case "9" TXTCENTENA = "NOVECIENTOS" End Select Select Case DECENA Case "1" TXTDECENA = "DIEZ" Select Case UNIDAD Case "1" TXTDECENA = "ONCE" Case "2" TXTDECENA = "DOCE" Case "3" TXTDECENA = "TRECE" Case "4" TXTDECENA = "CATORCE" Case "5" TXTDECENA = "QUINCE" Case "6" TXTDECENA = "DIECISEIS" Case "7" TXTDECENA = "DIECISIETE" Case "8" TXTDECENA = "DIECIOCHO" Case "9" TXTDECENA = "DIECINUEVE" End Select Case "2" TXTDECENA = "VEINTE" If UNIDAD <> "0" Then TXTDECENA = "VEINTI" End If Case "3" TXTDECENA = "TREINTA" If UNIDAD <> "0" Then TXTDECENA = "TREINTA Y " End If Case "4" TXTDECENA = "CUARENTA" If UNIDAD <> "0" Then TXTDECENA = "CUARENTA Y " End If Case "5" TXTDECENA = "CINCUENTA" If UNIDAD <> "0" Then TXTDECENA = "CINCUENTA Y " End If Case "6" TXTDECENA = "SESENTA" If UNIDAD <> "0" Then TXTDECENA = "SESENTA Y " End If Case "7" TXTDECENA = "SETENTA" If UNIDAD <> "0" Then TXTDECENA = "SETENTA Y " End If Case "8" TXTDECENA = "OCHENTA" If UNIDAD <> "0" Then TXTDECENA = "OCHENTA Y " End If Case "9" TXTDECENA = "NOVENTA" If UNIDAD <> "0" Then TXTDECENA = "NOVENTA Y " End If End Select If DECENA <> "1" Then Select Case UNIDAD Case "1" If IsCientos = False Then TXTUNIDAD = "UN" Else TXTUNIDAD = "UNO" End If Case "2" TXTUNIDAD = "DOS" Case "3" TXTUNIDAD = "TRES" Case "4" TXTUNIDAD = "CUATRO" Case "5" TXTUNIDAD = "CINCO" Case "6" TXTUNIDAD = "SEIS" Case "7" TXTUNIDAD = "SIETE" Case "8" TXTUNIDAD = "OCHO" Case "9" TXTUNIDAD = "NUEVE" End Select End If CONVIERTECIFRA = TXTCENTENA & " " & TXTDECENA & TXTUNIDAD End Function Function ConvierteDecimal(TEXTO) Dim Decenadecimal Dim Unidaddecimal Dim txtDecenadecimal Dim txtUnidaddecimal Decenadecimal = Mid(TEXTO, 1, 1) Unidaddecimal = Mid(TEXTO, 2, 1) Select Case Decenadecimal Case "1" txtDecenadecimal = "DIEZ" Select Case Unidaddecimal Case "1" txtDecenadecimal = "ONCE" Case "2" txtDecenadecimal = "DOCE" Case "3" txtDecenadecimal = "TRECE" Case "4" txtDecenadecimal = "CATORCE" Case "5" txtDecenadecimal = "QUINCE" Case "6" txtDecenadecimal = "DIECISEIS" Case "7" txtDecenadecimal = "DIECISIETE" Case "8" txtDecenadecimal = "DIECIOCHO" Case "9" txtDecenadecimal = "DIECINUEVE" End Select Case "2" txtDecenadecimal = "VEINTE" If Unidaddecimal <> "0" Then txtDecenadecimal = "VEINTI" End If Case "3" txtDecenadecimal = "TREINTA" If Unidaddecimal <> "0" Then txtDecenadecimal = "TREINTA Y " End If Case "4" txtDecenadecimal = "CUARENTA" If Unidaddecimal <> "0" Then txtDecenadecimal = "CUARENTA Y " End If Case "5" txtDecenadecimal = "CINCUENTA" If Unidaddecimal <> "0" Then txtDecenadecimal = "CINCUENTA Y " End If Case "6" txtDecenadecimal = "SESENTA" If Unidaddecimal <> "0" Then txtDecenadecimal = "SESENTA Y " End If Case "7" txtDecenadecimal = "SETENTA" If Unidaddecimal <> "0" Then txtDecenadecimal = "SETENTA Y " End If Case "8" txtDecenadecimal = "OCHENTA" If Unidaddecimal <> "0" Then txtDecenadecimal = "OCHENTA Y " End If Case "9" txtDecenadecimal = "NOVENTA" If Unidaddecimal <> "0" Then txtDecenadecimal = "NOVENTA Y " End If End Select If Decenadecimal <> "1" Then Select Case Unidaddecimal Case "1" txtUnidaddecimal = "UNO" Case "2" txtUnidaddecimal = "DOS" Case "3" txtUnidaddecimal = "TRES" Case "4" txtUnidaddecimal = "CUATRO" Case "5" txtUnidaddecimal = "CINCO" Case "6" txtUnidaddecimal = "SEIS" Case "7" txtUnidaddecimal = "SIETE" Case "8" txtUnidaddecimal = "OCHO" Case "9" txtUnidaddecimal = "NUEVE" End Select End If If Decenadecimal = 0 And Unidaddecimal = 0 Then ConvierteDecimal = "" Else ConvierteDecimal = txtDecenadecimal & txtUnidaddecimal End If End Function [/PHP] Saludos.
  3. Buenas tardes, Rebuscando en el foro me encontré con algunas soluciones en VBA para pasar números a texto... El problema es que ninguna redondea a números enteros redondeando hacia la cifra entera superior sino que presenta el texto en formato contable o de moneda. Ya logre borrarle la presentación de texto en formato contable pero aun no he logrado el redondeo hacia la cifra entera superior por lo que les posteo por este medio mi inquietud a ver si algún sabido en VBA me puede ayudar. En resumidas cuentas, necesito que si el numero que se presenta es 10,5 la función lea 11 y lo convierta a ONCE(esto ultimo ya la función lo hace). Aquí les dejo el código... Function letra(NUMERO) Dim TEXTO Dim MILLONES Dim MILES Dim CIENTOS Dim DECIMALES Dim CADENA Dim CADMILLONES Dim CADMILES Dim CADCIENTOS Dim caddecimales TEXTO = Round(NUMERO, 2) TEXTO = FormatNumber(TEXTO, 2) TEXTO = Right(Space(14) &amp; TEXTO, 14) MILLONES = Mid(TEXTO, 1, 3) MILES = Mid(TEXTO, 5, 3) CIENTOS = Mid(TEXTO, 9, 3) DECIMALES = Mid(TEXTO, 13, 2) CADMILLONES = CONVIERTECIFRA(MILLONES, False) CADMILES = CONVIERTECIFRA(MILES, False) CADCIENTOS = CONVIERTECIFRA(CIENTOS, True) caddecimales = ConvierteDecimal(DECIMALES) If Trim(CADMILLONES) &gt; "" Then If Trim(CADMILLONES) = "UN" Then CADENA = CADMILLONES &amp; " MILLON" Else CADENA = CADMILLONES &amp; " MILLONES" End If End If If Trim(CADMILES) &gt; "" Then If Trim(CADMILES) = "UN" Then CADMILES = "" CADENA = CADENA &amp; "" &amp; CADMILES &amp; "MIL" CADMILES = "UN" Else CADENA = CADENA &amp; " " &amp; CADMILES &amp; " MIL" End If End If If Trim(CADMILES) &gt; "001" Then CADMILES = "MIL" End If If DECIMALES = "00" Then If Trim(CADMILLONES &amp; CADMILES &amp; CADCIENTOS &amp; caddecimales) = "UN" Then CADENA = CADENA &amp; "UNO " Else If MILES &amp; CIENTOS = "000000" Then CADENA = CADENA &amp; " " &amp; Trim(CADCIENTOS) Else CADENA = CADENA &amp; " " &amp; Trim(CADCIENTOS) End If letra = Trim(CADENA) End If Else If Trim(CADMILLONES &amp; CADMILES &amp; CADCIENTOS &amp; caddecimales) = "UN" Then CADENA = CADENA &amp; "UNO " &amp; "CON " &amp; Trim(caddecimales) Else If MILLONES &amp; MILES &amp; CIENTOS &amp; DECIMALES = "000000" Then CADENA = CADENA &amp; " " &amp; Trim(CADCIENTOS) Else CADENA = CADENA &amp; " " &amp; Trim(CADCIENTOS) End If letra = Trim(CADENA) End If End If End Function Function CONVIERTECIFRA(TEXTO, IsCientos As Boolean) Dim CENTENA Dim DECENA Dim UNIDAD Dim TXTCENTENA Dim TXTDECENA Dim TXTUNIDAD CENTENA = Mid(TEXTO, 1, 1) DECENA = Mid(TEXTO, 2, 1) UNIDAD = Mid(TEXTO, 3, 1) Select Case CENTENA Case "1" TXTCENTENA = "CIEN" If DECENA &amp; UNIDAD &lt;&gt; "00" Then TXTCENTENA = "CIENTO" End If Case "2" TXTCENTENA = "DOSCIENTOS" Case "3" TXTCENTENA = "TRESCIENTOS" Case "4" TXTCENTENA = "CUATROCIENTOS" Case "5" TXTCENTENA = "QUINIENTOS" Case "6" TXTCENTENA = "SEISCIENTOS" Case "7" TXTCENTENA = "SETECIENTOS" Case "8" TXTCENTENA = "OCHOCIENTOS" Case "9" TXTCENTENA = "NOVECIENTOS" End Select Select Case DECENA Case "1" TXTDECENA = "DIEZ" Select Case UNIDAD Case "1" TXTDECENA = "ONCE" Case "2" TXTDECENA = "DOCE" Case "3" TXTDECENA = "TRECE" Case "4" TXTDECENA = "CATORCE" Case "5" TXTDECENA = "QUINCE" Case "6" TXTDECENA = "DIECISEIS" Case "7" TXTDECENA = "DIECISIETE" Case "8" TXTDECENA = "DIECIOCHO" Case "9" TXTDECENA = "DIECINUEVE" End Select Case "2" TXTDECENA = "VEINTE" If UNIDAD &lt;&gt; "0" Then TXTDECENA = "VEINTI" End If Case "3" TXTDECENA = "TREINTA" If UNIDAD &lt;&gt; "0" Then TXTDECENA = "TREINTA Y " End If Case "4" TXTDECENA = "CUARENTA" If UNIDAD &lt;&gt; "0" Then TXTDECENA = "CUARENTA Y " End If Case "5" TXTDECENA = "CINCUENTA" If UNIDAD &lt;&gt; "0" Then TXTDECENA = "CINCUENTA Y " End If Case "6" TXTDECENA = "SESENTA" If UNIDAD &lt;&gt; "0" Then TXTDECENA = "SESENTA Y " End If Case "7" TXTDECENA = "SETENTA" If UNIDAD &lt;&gt; "0" Then TXTDECENA = "SETENTA Y " End If Case "8" TXTDECENA = "OCHENTA" If UNIDAD &lt;&gt; "0" Then TXTDECENA = "OCHENTA Y " End If Case "9" TXTDECENA = "NOVENTA" If UNIDAD &lt;&gt; "0" Then TXTDECENA = "NOVENTA Y " End If End Select If DECENA &lt;&gt; "1" Then Select Case UNIDAD Case "1" If IsCientos = False Then TXTUNIDAD = "UN" Else TXTUNIDAD = "UNO" End If Case "2" TXTUNIDAD = "DOS" Case "3" TXTUNIDAD = "TRES" Case "4" TXTUNIDAD = "CUATRO" Case "5" TXTUNIDAD = "CINCO" Case "6" TXTUNIDAD = "SEIS" Case "7" TXTUNIDAD = "SIETE" Case "8" TXTUNIDAD = "OCHO" Case "9" TXTUNIDAD = "NUEVE" End Select End If CONVIERTECIFRA = TXTCENTENA &amp; " " &amp; TXTDECENA &amp; TXTUNIDAD End Function Function ConvierteDecimal(TEXTO) Dim Decenadecimal Dim Unidaddecimal Dim txtDecenadecimal Dim txtUnidaddecimal Decenadecimal = Mid(TEXTO, 1, 1) Unidaddecimal = Mid(TEXTO, 2, 1) Select Case Decenadecimal Case "1" txtDecenadecimal = "DIEZ" Select Case Unidaddecimal Case "1" txtDecenadecimal = "ONCE" Case "2" txtDecenadecimal = "DOCE" Case "3" txtDecenadecimal = "TRECE" Case "4" txtDecenadecimal = "CATORCE" Case "5" txtDecenadecimal = "QUINCE" Case "6" txtDecenadecimal = "DIECISEIS" Case "7" txtDecenadecimal = "DIECISIETE" Case "8" txtDecenadecimal = "DIECIOCHO" Case "9" txtDecenadecimal = "DIECINUEVE" End Select Case "2" txtDecenadecimal = "VEINTE" If Unidaddecimal &lt;&gt; "0" Then txtDecenadecimal = "VEINTI" End If Case "3" txtDecenadecimal = "TREINTA" If Unidaddecimal &lt;&gt; "0" Then txtDecenadecimal = "TREINTA Y " End If Case "4" txtDecenadecimal = "CUARENTA" If Unidaddecimal &lt;&gt; "0" Then txtDecenadecimal = "CUARENTA Y " End If Case "5" txtDecenadecimal = "CINCUENTA" If Unidaddecimal &lt;&gt; "0" Then txtDecenadecimal = "CINCUENTA Y " End If Case "6" txtDecenadecimal = "SESENTA" If Unidaddecimal &lt;&gt; "0" Then txtDecenadecimal = "SESENTA Y " End If Case "7" txtDecenadecimal = "SETENTA" If Unidaddecimal &lt;&gt; "0" Then txtDecenadecimal = "SETENTA Y " End If Case "8" txtDecenadecimal = "OCHENTA" If Unidaddecimal &lt;&gt; "0" Then txtDecenadecimal = "OCHENTA Y " End If Case "9" txtDecenadecimal = "NOVENTA" If Unidaddecimal &lt;&gt; "0" Then txtDecenadecimal = "NOVENTA Y " End If End Select If Decenadecimal &lt;&gt; "1" Then Select Case Unidaddecimal Case "1" txtUnidaddecimal = "UNO" Case "2" txtUnidaddecimal = "DOS" Case "3" txtUnidaddecimal = "TRES" Case "4" txtUnidaddecimal = "CUATRO" Case "5" txtUnidaddecimal = "CINCO" Case "6" txtUnidaddecimal = "SEIS" Case "7" txtUnidaddecimal = "SIETE" Case "8" txtUnidaddecimal = "OCHO" Case "9" txtUnidaddecimal = "NUEVE" End Select End If If Decenadecimal = 0 And Unidaddecimal = 0 Then ConvierteDecimal = "" Else ConvierteDecimal = txtDecenadecimal &amp; txtUnidaddecimal End If End Function La autoría del código no es mía... la encontré aquí en el foro y solo le modifique lo del formato contable. De antemano, muchas gracias por su atención así como a la ayuda que tengan a bien prestarme. Saludos.
  4. Muchas gracias ioyama y logroastur!!! Ambas soluciones me funcionaron!!! SOLUCIONADO.
  5. Buenas noches, Mi duda es la siguiente... Tengo este rango de celdas que contienen una formula SI, en uno de los valores arrojara un texto como resultado, en el caso contrario, arrojara solo un símbolo "*". El detalle esta en que predeterminadamente se configuro a las celdas para que alinearan el texto a la izquierda, pero de ser el caso que el resultado de la formula arroje el símbolo, se requiere que este esté centrado en la celda. Alguien sabe como modificar la alineación de una celda utilizando formulas y no macros?? Gracias de antemano por la atención y la ayuda que me puedan prestar.
  6. Hola: Disculpen las fechas a las que revivo este tema pero me interesa tener las herramientas que tiene este complemento y al instalarlo y usarlo me dice que me falta alguna biblioteca... cual podria ser?? para buscarla e instalarla.... Gracias por el aporte!!
  7. Buenas noches desde Venezuela... Tengo la siguiente instrucción FOR NEXT que utiliza una serie numérica(desde el 1 hasta un numero especificado en una celda) para realizar impresiones de informes... Sub Impresión_Boletines() ' ' Imprimir_Boletines Macro ' Application.ScreenUpdating = False For a = 1 To Sheets("BD").Range("F12") ' desde al 1 hasta un numero cualquiera Sheets("Boletin XtraOfic").Select Range("U5") = a 'Application.ActivePrinter = "PDFCreator en Ne00:" ActiveWindow.SelectedSheets.PrintOut Copies:=1 Next a End Sub El detalle esta en que con el transcurso del tiempo me he visto en la necesidad de excluir valores de la serie numérica (ya no es ej: 1,2,3,4,5... sino 1,3,5,6,7...) por lo que algunos de los informes que se imprimen llenan sus campos con #N/A generando una perdida de material importante, así que me gustaría que me ayudaran, en la medida de las posibilidades, en la modificación de la instrucción con el fin de incluir solo una serie de datos que yo le especificare al sistema. Muchas gracias de antemano por la atención que puedan prestarle a mi duda. Saludos.
  8. Muchas gracias por tu atención y esfuerzo, Tu solución funciona perfectamente!!! pero esa función no es tan sencilla de comprender y como Excel nos da la flexibilidad de encontrar distintas soluciones a un problema me gustaría dejar el tema abierto a mas posibilidades. Un saludo desde Venezuela.
  9. Buenas tardes, Otra duda seguramente sencilla de resolver... En este archivo que les adjunto tengo dos hojas, la hoja1 me sirve como base de datos y en la hoja2 tendré algo parecido a una planilla donde necesito que en las casillas "Posición en hoja1" me aparezca la celda de la hoja1 donde se encuentra cada nombre que ya he traído con una formula. Les agradezco su atención al tema de antemano. Posicion de la celda.zip
  10. Mejor imposible Luis!!! una vez mas muchas gracias por tu atención y ayuda. Tema cerrado.
  11. Hasta ahora excelente!!! Cumple con las expectativas... y lo mas útil en mi necesidad es que funciona al arrastrar la formula hacia las celdas de abajo, lo que me lleva a una pregunta, cual es la función exacta del símbolo "$" dentro de las formulas???
  12. Buenas noches a todos desde Venezuela... Aquí les dejo una duda que me ha surgido y no he sabido solucionar con las herramientas que manejo del excel. Tengo un libro con 2 hojas, la hoja 1 me funciona como base de datos, la hoja 2 sera una especie de planilla donde necesito colocar listas de nombres clasificados por año; así cuando en la hoja 2 coloque Año: 1ero se copiaran todos los nombres de la respectiva lista que esta en la hoja 1. Si es posible hacer esto sin aplicar una macro sino solo con formulas en la hoja se los agradecería, en caso que sea mas practica la macro pues ni modo, acepto sugerencias!!! Si ya existe una solución para este detalle en el foro posteenmelo por aquí, yo busque y solo encontré una solución factible pero utilizando macros. Saludos a todos y gracias por su interes. copiar rango.zip
  13. Buenas noches!!! A todos los que aportaron para solventar mi duda, MUCHAS GRACIAS!!! en especial a logroastur. Una vez mas les digo ayudaexcel se destaca de entre todos los foros de excel por los excelentes foristas que lo componen. Saludos Tema SOLUCIONADO.
  14. Una ultima duda... Como este procedimiento lo voy a aplicar a una planilla me interesaria reducir lo mas posible el tamaño de las celdas que contienen los dias y las fechas. He intentado y no he logrado 2 cambios de formatos: Para el primero necesito reducir los dias a solo 3 letras, ej: Lun-Mar-Mier-etc Lo segundo es que al concatenar (=CONCATENAR(ELEGIR(DIASEM(B2;2);"Lunes";"Martes";"Miercoles";"Jueves";"Viernes";"Sabado";"Domingo");"-";B2)) las celdas de dia y fecha obtengo algo como Lunes-40182. Lo ideal es que fuera Lun-04 Muchas gracias por su atencion y ayuda!!!
×
×
  • Create New...

Important Information

Privacy Policy


CTA Templates.png