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.

Pratik
źródło
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ć :)

Collin Grady
źródło
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?

Makah
źródło
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.

możeWeCouldStealAVan
źródło
Działa jak marzenie!!! Dzięki!! Nauczyłem się wiele!!
Pratik