Piilota tyhjä

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.
9663
Äänestä

Muut lukivat myös

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

Äänestä
  • 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?

    Äänestä

  • sama kirjoitti:

    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

    Äänestä

  • Kunde kirjoitti:

    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ää.

    Äänestä

  • sama kirjoitti:

    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

    Äänestä

  • Kunde kirjoitti:

    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.

    Äänestä

  • sama kirjoitti:

    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

    Äänestä

  • Kunde kirjoitti:

    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!

    Äänestä

  • Kunde kirjoitti:

    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

    ollos hyvä

    Äänestä

Kommentoi aloitusta


rivi? kirjoitti:

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.

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu