Połącz dwie formuły Excela


0

Mam określone dane w arkuszu 1, a niektóre inne dane w arkuszu 2.

Muszę porównać określoną wartość (Var1) z arkusza 1 i zwrócić określoną wartość z arkusza 2 i zwrócić wynik dla tego samego. Udało mi się to z tą formułą

=IF(COUNTIF(Sheet2!A:A, A2), "Yes", "No")

Arkusz 1

+------+------+---------+---------+
| var1 | var2 | result1 | result2 |
+------+------+---------+---------+
|      |      |         |         |
| abc  |  123 | yes     | yes     |
|      |      |         |         |
| bcd  |  234 | yes     | no      |
|      |      |         |         |
| cde  |  456 | no      | blank   |
+------+------+---------+---------+

Arkusz 2

+-------+-------+-------+
| List1 | List2 | List3 |
+-------+-------+-------+
| abc   |   123 |       |
| bcd   |       | 123   |
| def   |       |       |
+-------+-------+-------+

Muszę wyszukać var1 na liście 1 i var2 na liście 2 i liście 3

Chcę porównać inną wartość (Var2) w Arkuszu 2, tylko jeśli poprzedni wynik to „Tak”, co można łatwo osiągnąć za pomocą funkcji JEŻELI; ale haczyk polega na tym, że powinien porównywać wartości tylko z określonych wierszy Arkusza 2, które powinny być plus (+) i minus (-) 2 wiersze, od których znaleziono War1 w Arkuszu 2.

Nie jestem biegły w VBA, ale próbowałem swoich sił w formułach Excel.


Proszę rozważyć dodanie do pytania części posiadanych danych (zarówno dla arkusza 1, jak i arkusza 2). Następnie wybierz jedną konkretną komórkę w arkuszu 1 i podaj 1 przykład, w jaki sposób wynik powinien być na końcu.

Ile razy wartość A2 może pojawić się w arkuszu 2? Czy to także, że +/- 2 wiersze od var1 powinny być look_up_range dla Twoich 2 kryteriów?

@AndreSilva Zawiera przykład

@ 666bytes A2 jest kluczem do arkusza i jest unikatowy w obu.

@ 666bytes Tak. +/- 2 rzędy od var1 powinny być look_up_range dla Twoich 2 kryteriów

Odpowiedzi:


0

Układanie puzzli było fajne :)

Korzystając z twojego przykładu, umieściłem tę funkcję w C2(pod 'result1') i wypełniłem ją tablicą:

=IF(COUNTIF(Sheet2!A:A,A2),"Yes","No")

I dla D2„wynik2”:

=IF(C2="No","No",IF(COUNTIF(INDIRECT("Sheet2!C"&MAX((MATCH(A2,Sheet2!A:A)-2),1)&":C"&(MATCH(A2,Sheet2!A:A)+2)),B2),"Yes","No"))

Ponownie, tablica wypełnij to i powinno działać :)


Działa jak marzenie!!! Dzięki!! Nauczyłem się wiele!!
Pratik

Ładnie wykonane. Staram się jednak unikać pośrednich, gdy to możliwe, ponieważ będziesz musiał zaktualizować formułę, powiedzmy, wstawiając kolumnę po lewej stronie lub zmieniając nazwę arkusza.
możeWeCouldStealAVan

0

Możesz użyć OR () i porównać, jeśli masz plus i minus. Coś takiego:

=IF(OR(A1="+";A1="-");"Ok";"")

Następnie możesz zmienić formułę „Ok”.

=IF(OR(A1="+";A1="-");=IF(COUNTIF(Sheet1!C:C, A2), "Yes", "No");"")

Czy tego potrzebujesz?


Moje pytanie było dość niejasne, przepraszam za to. Edytowałem to dla większej przejrzystości.

0

Próbować: =IF(C2<>"Yes","",IF(COUNTIF(OFFSET(Sheet2!$B$1:$C$5,MAX(0,MATCH(A2,Sheet2!A:A,0)-3),0),B2)>0,"Yes","No"))

Zakładam, że:

  • var1jest unikalnym kluczem, jak powiedziałeś. W przeciwnym razie będzie to pasować tylko do pierwszego wystąpienia.
  • Chcesz, aby dopasować var2się zarówno list1 i list2. W przeciwnym razie należy zawęzić okno wyszukiwania do $B$1:$B$5. Jeśli po prawej stronie jest więcej list, po prostu dodaj kolumny do okna wyszukiwania.

Daj mi znać, jeśli masz jakieś pytania dotyczące tego, jak to działa.


Działa jak marzenie!!! Dzięki!! Nauczyłem się wiele!!
Pratik
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.