Pytanie Znajdź pierwszą niepustą komórkę w zakresie


Pracuję z listą danych, w której jedna lub wiele komórek w wierszu może być pustych.

Powiedzmy, że lista to komórki A1, A2, A3, A4. Próbuję utworzyć funkcję, która wykona następujące czynności:

IF A1 has a value I want the cell to return A1.
  IF A1 is empty then I want it to return A2.
   IF A1 and A2 are both empty I want it to return A3.
    If A1, A2 and A3 are all empty I want it to return A4.    

14
2018-04-30 12:09


pochodzenie


ile wierszy potrzebujesz do wsparcia, jeśli jest ich kilka, możesz zagnieżdżać instrukcje if =IF(A1<>"",A1,IF(A2<>"",A2,IF(A3<>"",IF(A4<>"","")))) poradziłbym sobie z twoim przykładem - Vincent De Smet
Pracuję z danymi finansowymi, więc lista ma około 500 wierszy. Problem polega na tym, że niektóre daty będą miały puste miejsca i próbuję wypełnić puste miejsca wcześniejszymi danymi. istnieje około 100 list i na każdej liście brakuje różnych dat. Myślałem o pustej funkcji, ponieważ nigdy nie powinno być więcej niż 4 kolejnych dat, ale nie mogłem wymyślić, jak to zrobić. wydaje się to świetnym rozwiązaniem, dziękuję bardzo - excelquestion
w tym przypadku twój przykład i wyjaśnienie nie pasują do twoich wymagań. Być może istnieje lepsze podejście do problemu. także, popełniłem błąd w części A3, powinno być A3, pomiędzy , i IF(A4... - Vincent De Smet
Dodałem kolejną odpowiedź na podstawie twojego komentarza, przepraszam za zmianę tytułu, ponieważ twój opis wydawał się inny od tego, czego potrzebowałeś. Nie sądzę, aby można to było łatwo zrobić za pomocą formuły, vba wymagana do osiągnięcia tego, czego potrzebujesz, jest dość krótka. spójrz i baw się dobrze! - Vincent De Smet


Odpowiedzi:


pierwszy wynik w google: http://chandoo.org/wp/2014/01/15/find-first-non-blank-item-in-a-list-excel-formulas/

Ta formuła zwraca pierwszą komórkę TEXT dla zakresu B1:B100:

=VLOOKUP("*", B1:B100, 1,FALSE)

* jest dziką kartą w Excelu. Kiedy poprosisz VLOOKUP, aby znaleźć *, znajdzie pierwszą komórkę, która zawiera cokolwiek.

UWAGA: To podejście znajduje pierwszą komórkę zawierającą dowolny tekst. Jeśli więc pierwszą niepustą komórką jest liczba (lub data,% lub wartość logiczna), formuła pokazuje następną komórkę zawierającą tekst.

Jeśli musisz znaleźć niepuste ten adres URL daje następujące rozwiązanie:

Jeśli chcesz znaleźć pierwszą niepustą wartość, niezależnie od tego, czy jest to tekst, czy liczba, możesz użyć poniższej formuły tablicowej.

=INDEX(B3:B100, MATCH(FALSE, ISBLANK(B1:B100), 0))

Upewnij się, że naciskasz CTRL+Przesunięcie+Wchodzić po wpisaniu tej formuły.

Jak działa ta formuła?

  • ISBLANK(B1:B100) część: To daje nam listę TRUE / FALSE wartości w zależności od 98 komórek w B1:B100 są puste lub nie. To wygląda tak:    {TRUE;TRUE;TRUE;FALSE;FALSE;FALSE;FALSE; ...}

  • MATCH(FALSE, ISBLANK(…), 0) część: Kiedy już mamy TRUE / FALSE wartości, musimy tylko znaleźć pierwszą FALSE wartość (tj. pierwsza niepustna komórka). Właśnie to MATCH funkcja działa. Znajduje dokładne dopasowanie wartości FALSE na liście.

  • INDEX(B1:B100, MATCH(…)) porcja: Kiedy już wiemy, która komórka jest pierwszą niepustą komórką, potrzebujemy jej wartości. Właśnie to INDEX robi.


20
2018-04-30 12:16





Jak wskazano w komentarzu do twojego pytania, masz 500 wierszy przeplatanych pustymi komórkami. Chcesz wypełnić puste komórki wartością ostatniej niepustej komórki.

Napisałbym trochę kodu VBA, który działałby w następujący sposób: wybierz zakres komórek, które chcesz wypełnić i wypełnij VBA:

Sub fillBlanks()
  For Each c In Selection.Cells
    If c.Value <> "" Then
      lastVal = c.Value
    Else
      c.Value = lastVal
    End If
  Next c
End Sub

w zasadzie, jeśli komórka jest pusta, użyj wartości ostatniej niepustej komórki (jeśli nie ma pustych komórek powyżej, pozostanie ona pusta). Inaczej, jeśli komórka nie jest pusta, zapisz ją jako ostatnią niepustą komórkę. Powtórz dla każdej komórki w wybranym zakresie.

Instrukcje krok po kroku dotyczące używania tego kodu vba - w tym przykładowym arkuszu:

sample worksheet

Upewnij się, że wybrano zakres, naciśnij ALT+F11.

Powinno to otworzyć Edytor Visual Basic:

Visual Basic Editor

naciśnij F7, Powinno to wywołać kod arkusza aktywacyjnego. Wklej kod VB z góry:

add Code

naciśnij F5 (lub użyj menu, aby uruchomić kod).

run Code

Wynik końcowy powinien wyglądać następująco:

result


2
2018-04-30 14:54





Możesz po prostu umieścić rank.eq formułę w kolumnie obok niego i wykonaj vlookup aby przenieść wszystkie dane na szczyt. Spowoduje to przeniesienie wszystkich danych na górę.

Na przykład na poniższym obrazku oceniam, używając procentu, chcę przenieść komórki z danymi do góry w celu prezentacji, ukryję wszystkie kolumny inne niż moje vlookups są.

Screenshot of spreadsheet


1
2018-06-30 19:14





To mi się udało

= WYGLĄD (2,1 / (A1: A13 <> ""), A1: A13)

Źródło: tutaj

enter image description here


0
2017-08-22 11:25