Jugar con un mazo completo (Microsoft Excel)
¿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]
.