Creo que tu solución está en la función aleatorio(). Esta función devuelve un número aleatorio mayor o igual que 0 y menor que 1, distribuido uniformemente. Para generar un número real aleatorio entre a (menor) y b (mayor), usá: =ALEATORIO()* (b-a+1) + (a) Para generar un número entero aleatorio entre a y b (inclusive ambos) , usá: =entero(ALEATORIO()* (b-a+1) +a) Cada vez que se calcula la hoja de cálculo, se devuelve un número aleatorio nuevo. Podes pasar de fórmulas a valores, todo el rango, mediante : 1)Click en cualquier celda con fórmulas 2)Ctrl+* , para seleccionar todo el rango 3)ctrl+c (edicion/copiar) , para copiar . 4) Edicion/Pegado Especial/Valores.
Creo que podrá servirme. ¿Sabes si puedo meterlo dentro de una macro para que al pulsar en una celda, me cree la tabla con los 400 valores automáticamente?.
Por supuesto. Sigue los pasos. (1) Ctrl+U (Abre una nueva PLanilla Archivo/Nuevo...) (2) Alt+F11 para ir a Visual Basic (Herramientas /Macro /Editor de Visual Basic ) (3) En la Ventana de Proyecto, haz doble click en Hoja1. El cursor se posicionará en la ventana de código. Pega el siguiente código : Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Excel.Range, Cancel As Boolean) Dim rango As String, celda As String Dim Minimo As Long, Maximo As Long '*** se puede seleccionar otro rango , '*** puede ser un nombre de rango rango = "a1:a400" '*** se puede seleccionar un celda de CLICKEO diferente de $A$1 celda = "$A$1" '*** minimo y maximo Minimo = 20 Maximo = 1000 If Target.Address = celda Then Selection.Offset(1, 0).Select '*** selecciona rango *** Range(rango).Select '*** pone formula *** Selection.FormulaR1C1 = "=INT(RAND()*(" & Maximo & "-" & Minimo & "+1)+" & Minimo & ")" '*** copia rango y lo pega como valor *** Selection.Copy Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Range("A2").Select Application.CutCopyMode = False End If End Sub (4) Cada vez que hagas un "doble click" en la celda A1, se va a completar el rango a1:a400 con números enteros comprendidos entre un mínimo (20) y un máximo (1000). Se puede cambiar, la celda de doble click (a1), el rango a completar, el máximo y el mínimo. Cada vez que hagas doble click en la celda elegida, vas a notar que se generan nuevos números. Espero que cumpla tus expectativas. Estoy a tu disposición por cualquier ampliación o modificación. Suerte.
La remitida no es la única opción . Otra posibilidad es usar "Worksheet_SelectionChange" que es muy útil. En el Visual Basic (Alt+F11). Haz Doble Click en la "Hoja2" dentro de la Ventana de Proyecto. Y el la ventana de código, vuelca lo siguiente. Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range) Dim celda As String celda = "$A$1" If Target.Address = celda Then If IsEmpty(ActiveCell.Value) Then MsgBox "celda vacia" Else MsgBox "celda con valores : " & ActiveCell.Value End If End If End Sub Cuando posiciones el cursor en la celda A1, saldrá un mensaje indicando si tiene o no valor. En lugar del mensaje se podría, por ejemplo, ejecutar una rutina, si la celda está vacía. Otros eventos pueden analizarse, seleccionando, en la ventana de código el objeto WORKSHEET y de la lista PROCEDIMIENTO, el evento deseado. No dudes en probar la grabadora de macros, para estudiar el código que se genera. Es la mejor manera de aprender. Y si precisas un libro, en mi opinión el mejor es "Excel visual basic for aplications, Step by Step" de Microsoft Press (de la version de Excel que tengas). Suerte.