Проблем при сравняване
8 отговора
286 прегледа
Проблем при сравняване
Имаме колони А , B и C.
В клетка C1, трябва да се получи следния резултат:
- "ДА" или 1, ако числото от клетка А1 е >= сравнено с всички числа от B1:B5
- "НЕ" или 0, ако няма поне 1 положителен релутат.
За клетка C2, трябва да се получи следния резултат:
- "ДА" или 1, ако числото от клетка А2 е >= сравнено с всички числа от B2:B5 (без клетка B1-задължително условие)
- "НЕ" или 0, ако няма поне 1 положителен релутат.
За C3 аналогично на C2,като са елиминирани вече B1 B2.
.........A............B...........C
1. 2.8496 | 2.8545 | НЕ или 0
2. 2.8652 | 2.8717 | НЕ или 0
3. 2.8871 | 2.9069 | ДА или 1
4. 2.8797 | 2.8976 | НЕ или 0
5. 2.8540 | 2.8855 | НЕ или 0
Опитах с :
{=SUM(IF(B1:B$5<=A1;1;0))}
Получава се без проблем, обаче при мен колоните A, B имат по 40 000 - 50 000 реда и съответно се получава огромен брой сравнения и сумирания (при което в 60% от случаите PC-то ми забива или изчислява поне 15-20 минути защото толкоз му са силиците), а това не е задължително защото важно е да се намери ПЪРВИЯ положителен резултат и да се премине към следващата клетка.
Аз бях до тук, ако има някой, който може да предложи друга формула(и) или някакъв код на VBA, който решава проблема по "по-елегантен" начин нека пише.
В клетка C1, трябва да се получи следния резултат:
- "ДА" или 1, ако числото от клетка А1 е >= сравнено с всички числа от B1:B5
- "НЕ" или 0, ако няма поне 1 положителен релутат.
За клетка C2, трябва да се получи следния резултат:
- "ДА" или 1, ако числото от клетка А2 е >= сравнено с всички числа от B2:B5 (без клетка B1-задължително условие)
- "НЕ" или 0, ако няма поне 1 положителен релутат.
За C3 аналогично на C2,като са елиминирани вече B1 B2.
.........A............B...........C
1. 2.8496 | 2.8545 | НЕ или 0
2. 2.8652 | 2.8717 | НЕ или 0
3. 2.8871 | 2.9069 | ДА или 1
4. 2.8797 | 2.8976 | НЕ или 0
5. 2.8540 | 2.8855 | НЕ или 0
Опитах с :
{=SUM(IF(B1:B$5<=A1;1;0))}
Получава се без проблем, обаче при мен колоните A, B имат по 40 000 - 50 000 реда и съответно се получава огромен брой сравнения и сумирания (при което в 60% от случаите PC-то ми забива или изчислява поне 15-20 минути защото толкоз му са силиците), а това не е задължително защото важно е да се намери ПЪРВИЯ положителен резултат и да се премине към следващата клетка.
Аз бях до тук, ако има някой, който може да предложи друга формула(и) или някакъв код на VBA, който решава проблема по "по-елегантен" начин нека пише.
Re: Проблем при сравняване
пробвай само с формулата IF() без да използваш SUM()
Go Install Analysis Toolpack!
Go Install Analysis Toolpack!
Re: Проблем при сравняване
Ако се ползва само IF, сравняването е само за един ред A1 >= B1 , нищо че се маркира цялата колона B.
Re: Проблем при сравняване
{=IF(SUM(IF(A1>=B1:B100;1;0))>=1;1;0)}
Това вече би трябвало да работи ако ти стигнат ресурсите разбира се. Ако не ти стигнат ресурсите и ексела ти забива и не може да го изчисли може да се направи с макрос, който да го стартираш когато пожелаеш и да ти връща същия резултат.
Go Install Analysis Toolpack!
Това вече би трябвало да работи ако ти стигнат ресурсите разбира се. Ако не ти стигнат ресурсите и ексела ти забива и не може да го изчисли може да се направи с макрос, който да го стартираш когато пожелаеш и да ти връща същия резултат.
Go Install Analysis Toolpack!
Re: Проблем при сравняване
Приятелю, пробвай със следната формула:
={IF(MAX($B$2:$B$6)>=A2;1;0)}
по принцип МАХ е много полезна функция и често спестява упортребата на IF, а в случая и на SUM
По българите при Дойран са изстреляни 350 000 снаряда. Даваме 9 убити и 40 ранени.
={IF(MAX($B$2:$B$6)>=A2;1;0)}
по принцип МАХ е много полезна функция и често спестява упортребата на IF, а в случая и на SUM
По българите при Дойран са изстреляни 350 000 снаряда. Даваме 9 убити и 40 ранени.
Re: Проблем при сравняване
Благодаря и на двама Ви!
Към alexoff: формулата работи отлично, като резултат вече не се получават големи числа, но времето за изчисление е почти същото както и с моята формула. Опитах и с макрос, но и с него времето беше същото
Към f(x)dx: с твоята формула процеса е много по-бърз, но има един съществен недостатък, не е спазено условието за сравнение:
A1>=B1:B$100
A2>=B2:B$100
A3>=B3:B$100
Иначе за намиране на MAX стойност е супер
Към alexoff: формулата работи отлично, като резултат вече не се получават големи числа, но времето за изчисление е почти същото както и с моята формула. Опитах и с макрос, но и с него времето беше същото
Към f(x)dx: с твоята формула процеса е много по-бърз, но има един съществен недостатък, не е спазено условието за сравнение:
A1>=B1:B$100
A2>=B2:B$100
A3>=B3:B$100
Иначе за намиране на MAX стойност е супер
Re: Проблем при сравняване
ами поиграй си де
например пробвай с ={IF(MAX($B$2:$B$6)<=A2;1;0)}
или с ={IF(MIN($B$2:$B$6)>=A2;1;0)}
Признавам си, че не съм се задълбочавал много-много в проблема ти. Но ти пробвай и ако пак не става - пиши. Ще му намерим колая
По българите при Дойран са изстреляни 350 000 снаряда. Даваме 9 убити и 40 ранени.
например пробвай с ={IF(MAX($B$2:$B$6)<=A2;1;0)}
или с ={IF(MIN($B$2:$B$6)>=A2;1;0)}
Признавам си, че не съм се задълбочавал много-много в проблема ти. Но ти пробвай и ако пак не става - пиши. Ще му намерим колая
По българите при Дойран са изстреляни 350 000 снаряда. Даваме 9 убити и 40 ранени.
Re: Проблем при сравняване
Времето за изчисление не може да се намали. Все пак за 50000 реда това са 1250000000 операции.
Re: само да вмъкна нещо
Ако се зададе ръчно преизчисляване на формулите, а не автоматично, може само при натискане на F9 да се преизчислява резултата.
Настройката е Tools/Options/Calculation - Manual
Настройката е Tools/Options/Calculation - Manual