Estrapolare una sola ruota

Buonasera. Facendo riferimento al file allegato,date le 6 estrazioni complete evidenziate a sinistra (per complete intendo l’intero quadro estrazionale da Bari fino alla Nazionale),tramite una macro o una formula vorrei ridurre il tutto a una sola ruota (in questo caso Milano),tale e quale così come è visibile sulla parte destra del foglio. Grazie per l’aiuto

estrapolare una sola ruota.ods (23.8 KB)

Buonasera, questa macro da associare all’evento contenuto modificato del Foglio1

Sub Main(Target)
Sh = Target.getSpreadsheet()
oCell() = Split(Target.AbsoluteName, ".")
oCellTarget = oCell(1)

If oCellTarget = "$H$1" Then
	c = Sh.createCursor
	c.gotoEndOfUsedArea(false) 
	LastRow = c.RangeAddress.EndRow
	Ruota = Target.String
	Sh.getCellrangeByName("I1:N"+LastRow+1).ClearContents(1+4)
	Inizio = 0
	ColIn = 8
	For i = 0 To LastRow
		if Left(Sh.getCellByPosition(0, i).String, 10) = "Estrazione" Then 
		   Sh.getCellByPosition(ColIn, Inizio).String = Sh.getCellByPosition(0, i).String
		   Inizio = Inizio + 2
		elseif Sh.getCellByPosition(0, i).String = Ruota Then
		   Arr = Sh.getCellrangeByPosition(0, i, 5, i).GetDataArray
		   Sh.getCellrangeByPosition(ColIn, Inizio, ColIn + 5, Inizio).SetDataArray(Arr)
		   Inizio = Inizio + 4
		End if
	   
	Next i
End if

End Sub

Allego file, la macro si avvia al variare della cella H1 dove viene selezionata la ruota da estrap
estrapolare una sola ruota.ods (22.0 KB)
olare

Salve. Volendo usare una formula in I3 potresti usare
=INDICE(A$1:A$96;(QUOZIENTE(RIF.RIGA()-1;6)+1)*16-9)
da tirare a destra per sei colonne e da ricopiare in I9, I15, I21 ecc…
estrapolare una sola ruota (bis).ods (27.2 KB)

Grazie mille a entrambi. Volevo chiedere a Gaetano se potrebbe gentilmente apportarmi una piccola modifica alla macro in modo che il quadro a destra del foglio possa diventare così come viene evidenziato in questo 2° allegato,vale a dire maggiore distanza tra i 5 ranges
(I1-N9,I24-N32 eccetera),ed estrazione numero 105 sempre presente nei 5 differenti intervalli. Una buona serata

estrapolare una sola ruota 2a variante.ods (23.9 KB)

Sub Main(Target)
Sh = Target.getSpreadsheet()
oCell() = Split(Target.AbsoluteName, ".")
oCellTarget = oCell(1)

If oCellTarget = "$H$1" Then
	c = Sh.createCursor
	c.gotoEndOfUsedArea(false) 
	LastRow = c.RangeAddress.EndRow
	Ruota = Target.String
	Sh.getCellrangeByName("I1:N"+LastRow+1).ClearContents(1+4)
	Inizio = 6
	ColIn = 8
	For x = 2 To 12
	 if Sh.getCellByPosition(0, x).String = Ruota Then
	   exit for
	 end if  
	Next x
    For i = 0 To 92 Step 23
      Sh.getCellByPosition(ColIn, i).String = Sh.getCellByPosition(0, 0).String
      Arr = Sh.getCellrangeByPosition(0, x, 5, x).GetDataArray
	  Sh.getCellrangeByPosition(ColIn, i+2, ColIn + 5, i+2).SetDataArray(Arr)
    Next i

	
	
	For i = 16 To LastRow
		if Left(Sh.getCellByPosition(0, i).String, 10) = "Estrazione" Then 
		   Sh.getCellByPosition(ColIn, Inizio).String = Sh.getCellByPosition(0, i).String
		   Inizio = Inizio + 2
		elseif Sh.getCellByPosition(0, i).String = Ruota Then
		   Arr = Sh.getCellrangeByPosition(0, i, 5, i).GetDataArray
		   Sh.getCellrangeByPosition(ColIn, Inizio, ColIn + 5, Inizio).SetDataArray(Arr)
		   Inizio = Inizio + 21
		End if
	   
	Next i
End if

End Sub

Buondì. Se ti può interessare anche una soluzione con formule, per l’estrazione 105 di Milano, in I3, I26 ecc… metti
=INDICE(A$1:A$96;CONFRONTA($T$1&"*";$A$1:$A$16;0))
Per le altre estrazioni invece metti in I9, I32 ecc…
=INDICE(A$1:A$96;(QUOZIENTE(RIF.RIGA()-1;23)+1)*16-(16-CONFRONTA($T$1&"*";$A$1:$A$16;0))+16)
Ps.: ho anche automatizzato la formula inserendo il nome della ruota da confrontare in T1
estrapolare una sola ruota (bis-2).ods (27.4 KB)

Perfetto,grazie mille a entrambi

Di nulla! Grazie del riscontro. :+1:

Scusa Gio,sempre collegato in qualche modo a questo tema e prima di chiudere il topic,volevo chiederti : c’è un modo per ridurre un testo posto in una cella con una determinata lunghezza,
che possa riversarsi in automatico verso un’altra cella ma con una dicitura molto più breve ? Faccio un esempio. In A1 scrivo : “Estrazione numero 105 di sabato 19 agosto 2023”. In A5 vorrei che saltasse fuori come testo soltanto “105”. Allego file per maggio chiarezza

30 agosto riduzione testo.ods (10.2 KB)

Prova così
=ESPR.REG(A1;"[0-9]{1,}")

Va bene,provo