Inserimento numeri random

Discussioni sull'applicazione per i fogli di calcolo
Rispondi
Raoul Duke
Messaggi: 132
Iscritto il: giovedì 7 marzo 2019, 12:11

Inserimento numeri random

Messaggio da Raoul Duke »

salve, nel foglio "PROVA" del doc in allegato vorrei inserire nelle 9 caselle a sfondo rosso i numeri da 1 a 9 in ordine CASUALE.
esiste una macro per fare ciò?
grazie
Allegati
torneo a 9.ods
(26.35 KiB) Scaricato 140 volte
Ultima modifica di Raoul Duke il lunedì 9 dicembre 2019, 13:28, modificato 2 volte in totale.
OpenOffice 4.1.5 con MacOS 10.13.6
Gaetanopr
Volontario
Volontario
Messaggi: 3300
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: inserimento numeri random

Messaggio da Gaetanopr »

I valori casuali devono essere univoci o possono ripetersi, perché potresti usare la seguente formula

Codice: Seleziona tutto

CASUALE.TRA(1;9)
Se fai una ricerca sul forum troverai diverse discussioni in merito tipo questa viewtopic.php?f=26&t=5734&p=28659&hilit ... ali#p28653

Credo debbano essere univoci, l'ho adattata al tuo esempio
Allegati
torneo a 9.ods
(22.53 KiB) Scaricato 126 volte
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
Raoul Duke
Messaggi: 132
Iscritto il: giovedì 7 marzo 2019, 12:11

Re: inserimento numeri random

Messaggio da Raoul Duke »

Grazie gaetano! sei grande
OpenOffice 4.1.5 con MacOS 10.13.6
Raoul Duke
Messaggi: 132
Iscritto il: giovedì 7 marzo 2019, 12:11

Re: [Risolto] inserimento numeri random

Messaggio da Raoul Duke »

ma la formula CASUALE.TRA(1;9) come la devo inserire nella macro?
N=CASUALE.TRA(1;9) non funziona ovviamente... (la sto inserendo in un ciclo for dove ogni volta in quella cella mi deve rimettere un numero casuale)
OpenOffice 4.1.5 con MacOS 10.13.6
Gaetanopr
Volontario
Volontario
Messaggi: 3300
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: inserimento numeri random

Messaggio da Gaetanopr »

Hai sbagliato discussione dovevi continuare nell'altra, comunque non capisco perché la devi inserire nella macro la formula, puoi usarla direttamente nel foglio e nelle celle dove vuoi che vengano restituiti i dati.
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
Raoul Duke
Messaggi: 132
Iscritto il: giovedì 7 marzo 2019, 12:11

Re: inserimento numeri random

Messaggio da Raoul Duke »

perché se la metto nel foglio mi inserisce un numero random e rimane fisso così per sempre...
mentre a me serve che ad ogni ciclo questo numero random cambi
OpenOffice 4.1.5 con MacOS 10.13.6
Gaetanopr
Volontario
Volontario
Messaggi: 3300
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: inserimento numeri random

Messaggio da Gaetanopr »

Codice: Seleziona tutto

Sub Rand (Foglio,N,Riga)
svc = CreateUnoService("com.sun.star.sheet.FunctionAccess")
Dim  param(1) as variant
param(0) = 1
param(1) = N

  
   For i = 1 To N
      Foglio.getCellByPosition(i, Riga).Value = = svc.CallFunction("com.sun.star.sheet.addin.Analysis.getRANDBETWEEN",param())
   Next i
 

End Sub
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
patel
Volontario attivo
Volontario attivo
Messaggi: 4019
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: inserimento numeri random

Messaggio da patel »

Ciao Gaetano, perché usi FunctionAccess invece di rnd() ?
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
Gaetanopr
Volontario
Volontario
Messaggi: 3300
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: inserimento numeri random

Messaggio da Gaetanopr »

Ciao patel non ho usato rnd() in quanto ho modificato la macro già presente nel post e poi perchè con la FunctionAccess viene replicata la funzione CASUALE.TRA presente tra le formule di Calc invece con Rnd() che genera numeri casuali da 0 a 1 avrei dovuto fare qualcosa del genere

Codice: Seleziona tutto

Int((N * Rnd) + 1)
(effettivamente più ridotta :D ) comunque entrambe raggiungono lo stesso scopo.
Rileggendo la macro ho notato un errore un doppio "=" ecco la macro corretta

Codice: Seleziona tutto

Sub Rand (Foglio,N,Riga)
svc = CreateUnoService("com.sun.star.sheet.FunctionAccess")
Dim  param(1) as variant
param(0) = 1
param(1) = N

 
   For i = 1 To N
      Foglio.getCellByPosition(i, Riga).Value = svc.CallFunction("com.sun.star.sheet.addin.Analysis.getRANDBETWEEN",param())
   Next i


End Sub
Versione con rnd()

Codice: Seleziona tutto

Sub Rand (Foglio,N,Riga)
 
  For i = 1 To N
      Foglio.getCellByPosition(i, Riga).Value = Int((N * Rnd) + 1)
  Next i

End Sub
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
Rispondi