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
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


0