¿Qué tal un título de sugerencia? El título se refiere al hecho de que es posible que deba completar un rango de celdas con una serie de números en orden aleatorio. Por ejemplo, es posible que desee completar 52 celdas con los números del 1 al 52, en orden aleatorio. (Esto sería similar a sacar cartas de un mazo barajado, de ahí el título de la sugerencia).

Obviamente, no hay una función de Excel incorporada para proporcionar esta capacidad, por lo que debe trabajar con macros. Afortunadamente, esta macro no es muy difícil de crear. La siguiente macro funcionará muy bien:

Sub FillRand()

Dim nums() As Integer     Dim maxval As Integer     Dim nrows As Integer, ncols As Integer     Dim j As Integer, k As Integer     Dim Ptr As Integer     Randomize

Set s = Selection     maxval = s.Cells.Count     nrows = s.Rows.Count     ncols = s.Columns.Count

ReDim nums(maxval, 2)



'Fill the initial array     For j = 1 To maxval         nums(j, 1) = j         nums(j, 2) = Int((Rnd * maxval) + 1)

Next j

'Sort the array based on the random numbers     For j = 1 To maxval - 1         Ptr = j         For k = j + 1 To maxval             If nums(Ptr, 2) > nums(k, 2) Then Ptr = k         Next k         If Ptr <> j Then             k = nums(Ptr, 1)

nums(Ptr, 1) = nums(j, 1)

nums(j, 1) = k             k = nums(Ptr, 2)

nums(Ptr, 2) = nums(j, 2)

nums(j, 2) = k         End If     Next j

'Fill in the cells     Ptr = 0     For j = 1 To nrows         For k = 1 To ncols             Ptr = Ptr + 1             s.Cells(j, k) = nums(Ptr, 1)

Next k     Next j End Sub

Esta macro usa una matriz bidimensional (nums) para determinar qué números usar y el orden en el que deben usarse. Cerca del comienzo de la macro, la matriz se llena con un número estático (del 1 al número de celdas) y un número aleatorio entre 1 y el número de celdas. Este segundo número se usa para ordenar la matriz. Una vez que se almacena la matriz, es muy sencillo colocar los números originales en las celdas.

Por cierto, la razón por la que se usa una matriz bidimensional es porque la función Rnd que usa VBA para generar números aleatorios puede devolver valores duplicados. Por lo tanto, incluso si la segunda dimensión de la matriz puede tener duplicados, cuando la matriz finalmente se ordena, la primera dimensión no tendrá duplicados.

Para usar la macro, comience seleccionando las celdas que desea llenar con valores secuenciales en un orden aleatorio. Cuando ejecuta la macro, ese rango se llena. Por ejemplo, si selecciona diez celdas y luego ejecuta la macro, esas celdas se llenarán con los números del 1 al 10, en orden aleatorio.

_Nota: _

Si desea saber cómo usar las macros descritas en esta página (o en cualquier otra página de los sitios ExcelTips), he preparado una página especial que incluye información útil.

link: / excelribbon-ExcelTipsMacros [Haga clic aquí para abrir esa página especial en una nueva pestaña del navegador].

ExcelTips es su fuente de formación rentable en Microsoft Excel.

Este consejo (2280) se aplica a Microsoft Excel 97, 2000, 2002 y 2003. Puede encontrar una versión de este consejo para la interfaz de cinta de Excel (Excel 2007 y posterior) aquí:

link: / excelribbon-Playing_with_a_Full_Deck [Jugando con un mazo completo].