Onko olemassa kaavaa millä saa piilotettua rivin siinä tapauksessa että se on tyhjä?
Taulukko on vaihtuva, hakee tietoja toisesta taulukosta. Niin tyhjiä riviä voi esiintyä, aina niitä ei ole.
Kaavan pitäisi siis piilottaa rivit automaattisesti jos ovat tyhjiä, mutta tietysti näyttää kaikki missä on jotakin.
Taulukko on vaihtuva, hakee tietoja toisesta taulukosta. Niin tyhjiä riviä voi esiintyä, aina niitä ei ole.
Kaavan pitäisi siis piilottaa rivit automaattisesti jos ovat tyhjiä, mutta tietysti näyttää kaikki missä on jotakin.
Vastaukset 9
Vanhimmat
moduuliin...
mutta jos tiedot haetaan kaavoilla niin kaavat tuhoutuvat tietenkin...
Sub PoistaTyhjät()
Dim VikaRivi As Integer
Dim laskuri As Integer
Application.ScreenUpdating = False
VikaRivi = ActiveSheet.UsedRange.Rows.Count
For laskuri = VikaRivi To 1 Step -1
If Application.CountA(Rows(laskuri)) = 0 Then
Rows(laskuri).Delete
End If
Next laskuri
End Sub
tiedot haetaan kaavalla toisesta taulukosta samassa työkirjassa.
Eli pitäisi saada siten, että sekä kaava että piilottaminen toimisi.
Saakohan tuossa tuota deleteä muutettua jotenkin jollakin tavalla hideksi?
Edellinen kaava toimii vaan jos solut tyhjiä-joten, jos niissä on kaava, makro ei toimi.
Piilottaa rivit voi muuttamalla koodia
Rows(laskuri).Delete --->Rows(laskuri).Hidden = True.
Kopiointi pitäisi suorittaa VBA:n avulla, jolloin kaavat voi tehdä lennossa. Ilman mallia enempää ei voi auttaa
Mulla ei ole taulukkoa tässä saatavilla, enkä muista kaavaa ulkoa, mutta siinä joka tapauksessa jakojäännöksellä sellainen kaava että jos solu B1 on parillinen haetaan soluihin A1-A20 tiedot vaikkapa soluista H1-H20.
Jos taas B1 on pariton, silloin haetaan A1-A2 soluihin tiedot soluista J1-J20
Oikeasti siis haetaan eri taulukosta samassa työkirjassa, mutta periaatehan on sama.
Tieto tällaisestakin koodista auttaisi kovasti.
Näissä kummassakin H ja J sarakkeissa on tyhjiä soluja ja ne ovat eri kohdissa, eikä niiden siis saa näkyä soluissa A1-A20
Toivottavasti tuosta sepustuksesta saa jotakin selvää.
toihan helpotti paljon...
taulukon moduuliin
Public Luku As Boolean
Function Parillinen(Numero As Double) As Boolean
If (Numero And 1) Then
Parillinen = False
Else
Parillinen = True
End If
Luku = Parillinen
End Function
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim VikaRivi As Integer
Dim laskuri As Integer
Application.ScreenUpdating = False
Application.EnableEvents = False
If Parillinen(Range("B1")) Then
Worksheets(2).Range("H1:H20").Copy Destination:=Worksheets(1).Range("A1")
Else
Worksheets(2).Range("I1:I20").Copy Destination:=Worksheets(1).Range("A1")
End If
VikaRivi = Range("A65536").End(xlUp).Row
For laskuri = VikaRivi To 1 Step -1
If Application.CountA(Rows(laskuri)) = 0 Then
Rows(laskuri).Delete
End If
Next laskuri
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
tosi iso kiitos avustasi!
Kun näytät hienosti taitavan VBA:n kysyisin vielä olisiko sulla vastausta siihen kuinka jaollinen jollakin muulla kuin kahdella kirjoitetaan?
Jos vaikka jaollinen kolmella tai neljällä, niin tuleeko kaavaan sitten vain If (Numero And 2) tai If (Numero And 3) ?
Ei varmaan ole tuolla tavalla kun alussa on Numero As Double.
Tämä on kyllä mielenkiintoista.
pari erilaista funktiota noille
Function JaollinenKolmella(ByVal numero As Long) As Boolean
JaollinenKolmella = (numero \ 3 = numero / 3)
End Function
Function JaollinenKolmella2(ByVal numero As Long) As Boolean
JaollinenKolmella2 = Not CBool(numero Mod 3)
End Function
Function JaollinenNeljällä(ByVal numero As Long) As Boolean
JaollinenNeljällä = (numero \ 4 = numero / 4)
End Function
Function JaollinenNeljällä2(ByVal numero As Long) As Boolean
JaollinenNeljällä2 = Not CBool(numero Mod 4)
End Function
Olet kyllä upea kun viitsit auttaa!
ollos hyvä