Automatyczne ukrywanie / Odkryj wszystkie wiersze na podstawie wartości w kolumnie


0

Mam „arkusz2”, w którym dane wypełniają się w zależności od tego, co zostało wprowadzone do „arkusza1”. Wypełnione dane to „N / A” lub konkretna instrukcja.

W arkuszu2 chciałbym, aby wszystkie wiersze z „N / A” w kolumnie G zostały automatycznie ukryte i stały się niewidoczne, jeśli dane w arkuszu 1 zostaną zmienione, co spowoduje zmianę z „N / A”.

Wiem, że VBA jest prawdopodobnie moją odpowiedzią, ale nie mam z nimi żadnej wiedzy / doświadczenia.


1
Odkąd masz już arkusz Excela z formułami .. umysł dzielący się przykładowym plikiem lub formułą danych + w Arkuszu 1 i 2 dla wyraźniejszego widoku. || „Kolumna G do automatycznego ukrywania i ukrywania się” <--- IMHO wybierz nagłówek> dane> filtr będzie działał automatycznie bez vba / formuły .. ale ukrywa tylko wiersze, a nie kolumny.
p._phidot_

Nie mogę udostępniać z powodów zastrzeżonych, ale postaram się wyjaśnić. Arkusz 1 „Nagłówek” to kwestionariusz. Mam pola wyboru powiązane z komórką, aby wskazać PRAWDA lub FAŁSZ, jeśli wybrano lub nie. Arkusz 2 pobiera dane z arkusza 3, „Opis” w zależności od tego, co zostało wybrane w Arkuszu 1 (PRAWDA lub FAŁSZ). Przykładowa formuła: = JEŻELI (LUB (Nagłówki! B6 = PRAWDA, Nagłówki! B7 = PRAWDA, Nagłówki! B10 = PRAWDA, Nagłówki! B11 = PRAWDA), Narracja! C29, „N / A”) N / A zapełnia się dość , zamiast pełnego rzędu „N / A”, chciałbym, żeby te wiersze się ukryły, dopóki nie pokażą czegoś innego.
użytkownik932858

Więc to jest formuła zawarta w kolumnie G Sheet2 .. prawda?
p._phidot_

Tak. Doszedłem do wniosku, że muszę stworzyć nową kolumnę G i umieścić formułę taką jak = h1 (h jest stary columng), więc pokazuje N / A lub cokolwiek i używa tego w VBA.
użytkownik932858

Odpowiedzi:


1

Ponieważ chcesz, aby program Excel automatycznie ukrywał i pokazywał wiersz / kolumnę, jeśli wyznaczona kolumna zawiera błąd / wartość #NA. W takim przypadku VBA (Macro) jest najlepszym i poręcznym rozwiązaniem.

Wprowadź ten kod jako standardowy moduł w Arkuszu 2.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
 Dim rng As Range
    Dim cl As Range

    Application.ScreenUpdating = False
    Set rng = [H2:H25]
    For Each cl In rng
        If IsError(cl) Then
            cl.EntireColumn.Hidden = cl = CVErr(xlErrNA)
        Else
            cl.EntireColumn.Hidden = cl = ""
        End If
    Next
    Application.ScreenUpdating = True
End Sub

Uwaga:

  • W razie potrzeby dostosuj odwołania do komórek w kodzie.
  • Moja sugestia jest zamiast ukryć / odkryć Wiersz lepiej obsługiwać formułę Tylko kolumna.
  • Aby ukryć zastępowanie wiersza, za cl.EntireColumn.Hiddenpomocą cl.EntireRow.Hidden.

0

Spróbuj tego .. włożyć wzory ...

H1 --> =IF(G1="N/A",0,1)
H2 --> =IF(G2="N/A",H1,H1+1)
J1 --> =IFERROR(INDEX(G:G,MATCH(I1,H:H,0)),"")

rag H2 + J1 w dół. niektóre numery biegowe ..

I1 --> 1
I2 --> 2
I3 --> 3
I4 --> 4 and so on..

Hope Column J jest tym, czego szukasz .. (:


Wybacz moją ignorancję ... co to dla mnie robi?
użytkownik932858

„Chciałbym, żeby te„ Nie dotyczy ”wiersze do ukrycia” - Otrzymasz wszystkie wartości kolumny G Narrative! C29, pomijając wiersze „N / A”. || Btw, odtwarzam to bez przykładowych danych .. tylko formuła, którą udostępniłeś .. Zakładam również, że w twoich danych nie ma nagłówka (znajdują się pierwsze dane @ G1, drugie @ G2, bez tytułu kolumny .. ). Bez przykładowych danych / zrzutu ekranu, wszyscy tutaj możemy najlepiej pracować z założeniami struktury danych / formatu. (:
p._phidot_

Inny sposób patrzenia na to. Nie mam formuły jednokreskowej ani skryptu vba, aby „usunąć” wiersze „N / A”. Potrzebuję 3 kolumny (2 pomocników + 1 wynik), aby osiągnąć ten wyczyn. Jeśli utkniesz w zrozumieniu kroków / formuły .. po prostu zadzwoń tutaj .. (: || IMHO Nie jestem najlepszą osobą (umiejętnością) tutaj, ale pracuję nad sposobem używania excela bez vba lub formuł tablicowych .. i oto jestem, z najlepszym strzałem, jaki mam. / (^ _ ^)
p._phidot_

Właśnie wypróbowałem to w moim arkuszu kalkulacyjnym. Pozbywa się „N / A”, ale nie ukrywa wierszy. Po prostu tworzy puste miejsce.
user932858

Tak, nie ma. Będziesz potrzebował vba, jeśli chcesz to zrobić w tym samym arkuszu. || Moje obejście to .. aby załadować dane kolumny A do F do kolumny K do P za pomocą =IFERROR(INDEX(A:A,MATCH(I1,$H:$H,0)),""). Następnie po prostu „zmapuj” wynik w kolumnie J na P w arkuszu „IntendedOutput”. Będę tak, jakby nigdy nie było wiersza „pominięty” .. oto mój przykładowy plik.
p._phidot_
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.