Righe vuote, traslare dati in alto
- 
				Francesco90
 - Messaggi: 73
 - Iscritto il: mercoledì 2 agosto 2017, 23:33
 
Righe vuote, traslare dati in alto
Ciao ragazzi, ho bisogno che in un elenco di persone, selezionando tale elenco, nel caso del file che vi posto, selezionando l'intervallo di celle A2:C7 io possa far riempire le righe vuote traslando in alto tutto.
			
			
									
						
							Windows8.1 Libreoffice 6.3.4
			
						Re: righe vuote, traslare dati in alto
non ti andrebbe bene eliminare le righe vuote con una macro ?
			
			
													
					Ultima modifica di patel il domenica 23 giugno 2019, 18:42, modificato 1 volta in totale.
									
			
						
							-------------------
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
			
						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
Re: Righe vuote, traslare dati in alto
Ciao, volendo si può fare con una formula matriciale
da inserire in E2 confermare con la combinazione di tasti ctrl+maiuscolo+invio e da copiare e in collare a destra per tre colonne e in basso fin dove serve.
			
			
									
						
							Codice: Seleziona tutto
=SE(VAL.ERRORE(INDICE(A$2:A$7;PICCOLO(SE(A$2:A$7<>"";RIF.RIGA($A$2:$A$7)-1);RIF.RIGA($A1))));"";INDICE(A$2:A$7;PICCOLO(SE(A$2:A$7<>"";RIF.RIGA($A$2:$A$7)-1);RIF.RIGA($A1))))...se sei soddisfatto delle risposte ricevute metti il [Risolto] viewtopic.php?f=9&t=5661
Libreoffice 25.8 LinuxMint 21/22
			
						Libreoffice 25.8 LinuxMint 21/22
Re: Righe vuote, traslare dati in alto
Una possibile soluzione è questa
			
			
									
						
							Codice: Seleziona tutto
Sub MoveEmpyRows()
oSheet = ThisComponent.Sheets(0)
c = oSheet.createCursor
c.gotoEndOfUsedArea(false)
LastRow = c.RangeAddress.EndRow
LastCol = 2
with oSheet
  r=1
  If oSheet.getCellByPosition(0, LastRow).String <>  ""  Then
    for r= LastRow to 1 step -1
      if .getCellByPosition(0, r).String = "" then
        dr=LastRow-r
        Range = .getCellRangeByPosition(0,r+1,Lastcol,LastRow).getDataArray
        dRange  = .getCellRangeByPosition(0,r,Lastcol,r+dr-1)
        dRange.setDataArray(Range)
        .getCellRangeByPosition(0,r+dr,Lastcol,LastRow).clearContents(5)
        exit for
      end if
    next
  endif
  n=0
  For r = Lastrow-1 to 1 step -1
      If oSheet.getCellByPosition(0, r).String = ""  Then
        oSheet.getRows.removeByIndex(r, 1)         
        n=n+1
      End If
  Next
  oRangeAddress = oSheet.getCellRangeByPosition(0,LastRow-n,Lastcol,LastRow-1).getRangeAddress()
  .insertCells(oRangeAddress, com.sun.star.sheet.CellInsertMode.ROWS)
End With
End Sub
-------------------
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
			
						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

