Excel - macro en excel

   
Vista:

macro en excel

Publicado por Boris (1 intervención) el 30/04/2010 03:07:49
hola necesito una ayuda por favor, estoy haciendo un programa que saca los números primos, soy nuevo en esto del excel pero tengo dos problemas

primeramente mi programa hace lo siguiente:
Ingreso un numero n
en pantalla me escribe los números del uno al n en filas de diez en diez
luego borra el uno y saca un mensaje el uno no es primo
luego borra los multiplos de dos y saca un mensaje que dice se han borrado los multiplos de dos
y asi hasta que a borrado los multiplos de dos hasta la parte entera de la raiz de n

mi problema es el siguiente, como puedo implementar en mi programa para que en vez de cada paso tan solo me salga como mensaje se han eliminado los multiplos de M siendo M un numero primo, pues no me gusta que salga" se han eliminado los multiplos de cuatro", si ya se eliminaron al eliminarse los multiplos de dos., es decir que solo me salga el mensaje se han eliminado los multiplos de 2,3,5,7,9,11,13,15....etc en cada paso

y otra pregunta como puedo que despues que me queden en la tabla solo numeros primos hacer una macro que lea cada primo y luego los escriba en una fila de otra o¿hoja de excel

saludos

aqui les envio el codigo que hice que elimina los números

Sub primos()
'
' primos Macro
'
' Acceso directo: CTRL+w
'

MsgBox (" LOS NUMEROS QUE NO SON PRIMOS SE IRAN ELIMINANDO")

Dim j, k, m, a, e As Integer


n = Sheets("Hoja1").Cells(3, 2)

Range("B4").Select
ActiveCell.FormulaR1C1 = "=SQRT(R[-1]C)"
Range("B5").Select
ActiveCell.FormulaR1C1 = "=INT(R[-1]C)"
e = Sheets("Hoja1").Cells(5, 2)
r = Sheets("Hoja1").Cells(4, 2)






k = 6
j = 4
h = 2
Cells(k, j).Value = ""
MsgBox (" El 1 no es primo")

While h <= e

While k < 100
While j < 14
a = Cells(k, j).Value

If a <> h Then
If a Mod h = 0 Then

Cells(k, j).Value = ""
j = j + 1

Else

j = j + 1
End If

Else
j = j + 1
End If

Wend

k = k + 1
j = 4

Wend

k = 6
j = 4
If IsEmpty(h) Then
h = h + 1
Else
MsgBox (" SE HAN ELIMINADO LOS MULTIPLOS DE" + Str$(h))
h = h + 1

End If
Wend

End Sub

ESTE ES EL CODIGO QUE ME ESCRIBE LA LISTA DE LOS NUMEROS DEL 1 AL N
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:macro en excel...recursivo

Publicado por Audad (58 intervenciones) el 30/04/2010 04:36:03
Tareas del Insti...
Un derrotero... indagaste lo que es programacion recursiva... mencionaron y no atendiste... investiga... y resolveras...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:macro en excel

Publicado por jcs (494 intervenciones) el 30/04/2010 10:58:50
Muy buenas,

Antes de nada, no has puesto el código para escribir los números 1 al N, pero supongo que los escribe en el área D6:L99.
Yo te haría alguna sugerencia sobre tu código, pero como no es eso lo que pides, te ofrezco una solución, manteniendo en esencia lo que tienes.
Casi al final, donde tienes:
MsgBox (" SE HAN ELIMINADO LOS MULTIPLOS DE" + Str$(h))
h = h + 1

Sustituye el h = h + 1 por:

Sheets("Hoja2").Cells(menor, 1) = h
menor = menor + 1
Range("c4").Select
ActiveCell.FormulaLocal = "=K.ESIMO.MENOR(D6:L99;" & menor & ")"
h = Range("c4")

También tienes que definir la variable menor como menor = 1
Todo esto hará, que te escriba en Hoja2 el número primo, que te muestre sólo cuando borra sus múltiplos y además que corra más rápido, al no ejecutarse los números intermedios.

Ya dirás si es lo que quieres.

Un saludo. Juanjo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:macro en excel

Publicado por sanmath (1 intervención) el 30/04/2010 15:04:33
Holajujo saludos, en tu sugerencia de código no entiendo lo sigueinte
Sheets("Hoja2").Cells(menor, 1) = h
menor = menor + 1
Range("c4").Select
ActiveCell.FormulaLocal = "=K.ESIMO.MENOR(D6:L99;" & menor & ")"
h = Range("c4")
como utilizo estodebo definirlo de alguna forma
=K.ESIMO.MENOR(D6:L99;" & menor & ")"
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:macro en excel

Publicado por jcs (494 intervenciones) el 01/05/2010 11:51:29
Muy buenas,

en principio no hay que definir nada, K.ESIMO.MENOR es una función de excel, por lo que si tienes el excel en español y el punto y coma como separador de parámetros, la macro debería funcionar.
La función en inglés es small, pero no puedo asegurar cual es su sintaxis. En principio las macros funcionan igual en inglés y en español, lo que pasa es que la función ActiveCell.FormulaLocal, incorpora la función que se diga para que funcione localmente, por lo que distingue el idioma.

No sé si te sirve de algo esta explicación.

Un saludo. Juanjo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:macro en excel

Publicado por felix (1 intervención) el 06/10/2014 03:49:41
hola muy buenas soy nuevo por aca y pues yo necesito crear una macro que me solucione lo siguiente:
que me imprima los numeros pares del 2 al 40 desde la celda B1 hasta la correspondiente.....
de ante mano gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar