|
Тема
|
Проблем при сравняване
|
|
Автор | PPG (Нерегистриран) |
Публикувано | 11.04.06 19:47 |
|
Имаме колони А , 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, който решава проблема по "по-елегантен" начин нека пише.
| |
Тема
|
Re: Проблем при сравняване
[re: PPG]
|
|
Автор |
alexoff ( (_)] .) |
Публикувано | 11.04.06 21:38 |
|
пробвай само с формулата IF() без да използваш SUM()
| |
Тема
|
Re: Проблем при сравняване
[re: alexoff]
|
|
Автор | PPG (Нерегистриран) |
Публикувано | 12.04.06 02:05 |
|
Ако се ползва само IF, сравняването е само за един ред A1 >= B1 , нищо че се маркира цялата колона B.
| |
Тема
|
Re: Проблем при сравняване
[re: PPG]
|
|
Автор |
alexoff ( (_)] .) |
Публикувано | 12.04.06 06:48 |
|
{=IF(SUM(IF(A1>=B1:B100;1;0))>=1;1;0)}
Това вече би трябвало да работи ако ти стигнат ресурсите разбира се. Ако не ти стигнат ресурсите и ексела ти забива и не може да го изчисли може да се направи с макрос, който да го стартираш когато пожелаеш и да ти връща същия резултат.
| |
Тема
|
Re: Проблем при сравняване
[re: PPG]
|
|
Автор |
f(x)dx () |
Публикувано | 12.04.06 09:23 |
|
Приятелю, пробвай със следната формула:
={IF(MAX($B$2:$B$6)>=A2;1;0)}
по принцип МАХ е много полезна функция и често спестява упортребата на IF, а в случая и на SUM
По българите при Дойран са изстреляни 350 000 снаряда. Даваме 9 убити и 40 ранени.
| |
Тема
|
Re: Проблем при сравняване
[re: f(x)dx]
|
|
Автор | PPG (Нерегистриран) |
Публикувано | 12.04.06 19:32 |
|
Благодаря и на двама Ви!
Към alexoff: формулата работи отлично, като резултат вече не се получават големи числа, но времето за изчисление е почти същото както и с моята формула. Опитах и с макрос, но и с него времето беше същото
Към f(x)dx: с твоята формула процеса е много по-бърз, но има един съществен недостатък, не е спазено условието за сравнение:
A1>=B1:B$100
A2>=B2:B$100
A3>=B3:B$100
Иначе за намиране на MAX стойност е супер
| |
Тема
|
Re: Проблем при сравняване
[re: PPG]
|
|
Автор |
f(x)dx () |
Публикувано | 13.04.06 08:18 |
|
ами поиграй си де
например пробвай с ={IF(MAX($B$2:$B$6)<=A2;1;0)}
или с ={IF(MIN($B$2:$B$6)>=A2;1;0)}
Признавам си, че не съм се задълбочавал много-много в проблема ти. Но ти пробвай и ако пак не става - пиши. Ще му намерим колая
По българите при Дойран са изстреляни 350 000 снаряда. Даваме 9 убити и 40 ранени.
| |
Тема
|
Re: Проблем при сравняване
[re: PPG]
|
|
Автор |
TRN () |
Публикувано | 13.04.06 08:19 |
|
Времето за изчисление не може да се намали. Все пак за 50000 реда това са 1250000000 операции.
| |
Тема
|
Re: само да вмъкна нещо
[re: alexoff]
|
|
Автор |
River_ (Eliniki) |
Публикувано | 13.04.06 08:43 |
|
Ако се зададе ръчно преизчисляване на формулите, а не автоматично, може само при натискане на F9 да се преизчислява резултата.
Настройката е Tools/Options/Calculation - Manual
| |
|
|
|
|