|
|
|
Вычисление количества занятых тел.линий в excel
|
|||
|---|---|---|---|
|
#18+
Здравствуйте Есть данные времени телефонных разговоров в excel из двух столбцов Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Нужно каким-то образом определить сколько телефонных линий было занято в каждой сторке т.е. на выходе должно получиться Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2009, 15:33 |
|
||
|
Вычисление количества занятых тел.линий в excel
|
|||
|---|---|---|---|
|
#18+
MaxBod, А почему в первой 09:56 стоит 1, когда на нее накладывается лежащая ниже 09:55? Вообще, какой принцип установки 1, 2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2009, 15:46 |
|
||
|
Вычисление количества занятых тел.линий в excel
|
|||
|---|---|---|---|
|
#18+
Число в третьем столбце - количество занятых телефонных линий, на данный момент В первый раз все линии свободны - поэтому 1, в следующий одна линия занята поэтому - 2, если будет занята ещё одна линия - будет 3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2009, 16:15 |
|
||
|
Вычисление количества занятых тел.линий в excel
|
|||
|---|---|---|---|
|
#18+
MaxBod, встаёшь на левую верхнюю ячейку и запускаешь макрос. Проверь. Dim i, j, x As Integer Sub z() i = ActiveCell.Row Cells(i, ActiveCell.Column + 2).Value2 = 1 i = i + 1 j = i Do While Cells(i, ActiveCell.Column).Value2 <> "" j = ActiveCell.Row x = 1 Do While j < i If (Cells(j, ActiveCell.Column).Value2 <= Cells(i, ActiveCell.Column).Value2) And (Cells(j, ActiveCell.Column).Value2 + Cells(j, ActiveCell.Column + 1).Value2 >= Cells(i, ActiveCell.Column).Value2) Then x = x + 1 End If Cells(i, ActiveCell.Column + 2).Value2 = x j = j + 1 Loop i = i + 1 Loop End Sub ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2009, 16:22 |
|
||
|
Вычисление количества занятых тел.линий в excel
|
|||
|---|---|---|---|
|
#18+
MaxBod, В С2 пишем формулу массива =СУММ(--($A$2:$A2+$B$2:$B2>=A2)) (вводится через контрл шифт ентер) и протягиваем вниз ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2009, 16:33 |
|
||
|
Вычисление количества занятых тел.линий в excel
|
|||
|---|---|---|---|
|
#18+
_Boroda_, протестировал - что-то не то... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2009, 16:36 |
|
||
|
Вычисление количества занятых тел.линий в excel
|
|||
|---|---|---|---|
|
#18+
спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2009, 16:40 |
|
||
|
Вычисление количества занятых тел.линий в excel
|
|||
|---|---|---|---|
|
#18+
_Boroda_MaxBod, В С2 пишем формулу массива =СУММ(--($A$2:$A2+$B$2:$B2>=A2)) (вводится через контрл шифт ентер) и протягиваем внизПротетировал. работает. Хотелось бы только для общего развития узнать, что означают две тире в коде. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2009, 16:45 |
|
||
|
Вычисление количества занятых тел.линий в excel
|
|||
|---|---|---|---|
|
#18+
Djon Player, работать-то работает, только результат - правильный или нет? Про два тире и мне интересно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2009, 16:52 |
|
||
|
Вычисление количества занятых тел.линий в excel
|
|||
|---|---|---|---|
|
#18+
Про два тире $A$2:$A2+$B$2:$B2>=A2дает массив из значений ИСТИНА и ЛОЖЬ. Если мы дважды сменим у каждого знак, то в принципе ничего не изменится, кроме того, что ИСТИНА превратится в 1, а ЛОЖЬ - в 0. Их и складываем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2009, 17:08 |
|
||
|
Вычисление количества занятых тел.линий в excel
|
|||
|---|---|---|---|
|
#18+
thrasheadDjon Player, работать-то работает, только результат - правильный или нет? Про два тире и мне интересно. Результат такой получился: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Отличие только в предпоследней строке, 4 вместо 2, а как правильнее виднее автору вопроса. А в первой строке наверно подразумевается просто ручками поставить 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2009, 17:09 |
|
||
|
Вычисление количества занятых тел.линий в excel
|
|||
|---|---|---|---|
|
#18+
_Boroda_Про два тире $A$2:$A2+$B$2:$B2>=A2дает массив из значений ИСТИНА и ЛОЖЬ. Если мы дважды сменим у каждого знак, то в принципе ничего не изменится, кроме того, что ИСТИНА превратится в 1, а ЛОЖЬ - в 0. Их и складываем.Только после трёх прочтений комментария до меня дошло, что подразумевалось, после первого и второго прочтения сначала немного неправильные мысли в голову лезли и из-за этого возникали вопросы. Не знал, что можно дважды менять знак ставя два тире подряд, я бы по старинке скобками их разделял. Я поначалу подумал, что может это какой-то другой вид записи операции отрицания или вобще, что-то из программирования на С++. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2009, 17:15 |
|
||
|
Вычисление количества занятых тел.линий в excel
|
|||
|---|---|---|---|
|
#18+
_Boroda_Про два тире Объяснение от ZVI :) В Excel есть так называемое неявное преобразование типов. Например, формула ="2" * 3, перемножающая текстовое значение "2" на числовое, автоматически преобразует текстовое значение "2" в числовое 2. Результат будет равен 6, как будто перемножались два числа. Такое преобразование происходит при любым математических действиях: сложении, вычитании, умножении, возведении в степень и проч., включая смену знака на противоположный. Так -"2" автоматически преобразуется в отрицательное число -2. А если еще раз сменить знак --"2", то получим число 2. Если записать в ячейку формулу: =-(-"2") и с помощью меню Сервис - Зависимости формул - Вычислить формулу - Вычислить(2 раза) посмотреть, что с ней сделает Excel, то эволюция будет такой: -(-"2"), потом -(-2), а затем 2. Важно отметить, что если записать формулу без скобок =--"2", то --"2" преобразуется в число 2 без промежуточных действий (в одно действие). Аналогичные преобразования будут и при добавлении к текстовому значению нуля ="911"+0, умножении текста на единицу ="02"*1 и прочих математических действиях, не меняющих результата мат. выражения. Подобные преобразования Excel выполняет не только с текстовыми значениями, но и с логическими: =ЛОЖЬ+0 или =ЛОЖЬ*1 или =--ЛОЖЬ дает 0, так как логическое значение ЛОЖЬ автоматически преобразуется в 0 (ноль). =ИСТИНА+0 или =ИСТИНА*1 или =--ИСТИНА дает 1, так как логическое значение ИСТИНА автоматически преобразуется в 1. Любое математическое действие само по себе запускает механизм преобразования в числа текстовых значений математического выражения: ="3"+"5" выдает числовое значение 8 Собственно, поэтому =СУММПРОИЗВ(--(Выражение1=Условие); --(Выражение2)) можно заменить на =СУММПРОИЗВ((Выражение1=Условие)*(Выражение2)), т.к. математическое действие умножения автоматически запускает механизм преобразования типов множителей, и дополнительных преобразователей типа двойного отрицания уже не требуется. Ну и, наконец, почему всё же часто используют именно двойное отрицание, а не добавление нуля или умножение на единицу? Ответ прост: двойное отрицание теоретически выполняется быстрее умножения на 1, сложения с нулем и других математических действий. Экономия времени вычисления небольшая, и по некоторым оценкам составляет примерно 15% ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2009, 08:20 |
|
||
|
Вычисление количества занятых тел.линий в excel
|
|||
|---|---|---|---|
|
#18+
vikttur_Boroda_Про два тире Объяснение от ZVI :) Спасибо, познавательно. Я уже вчера с этим поэкспериментировал, можно хоть 20 минусов подряд поставить, Excel их скушает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2009, 09:54 |
|
||
|
Вычисление количества занятых тел.линий в excel
|
|||
|---|---|---|---|
|
#18+
По строкам, где в верхней 56, а ниже 55, можно сделать вывод, что время - не обязательно по нарастающей, поэтому при замене времени на меньшее, например, час ночи - формула выдаст количество всех верхних строк. Т.е. если вариант перемешанных данных имеет место - нужно определять перекрытие массивов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2009, 12:57 |
|
||
|
Вычисление количества занятых тел.линий в excel
|
|||
|---|---|---|---|
|
#18+
viktturПо строкам, где в верхней 56, а ниже 55, можно сделать вывод, что время - не обязательно по нарастающей, поэтому при замене времени на меньшее, например, час ночи - формула выдаст количество всех верхних строк. Т.е. если вариант перемешанных данных имеет место - нужно определять перекрытие массивов. Думаю что правильнее для начала отсортировать данные по возрастанию времени. Учитывая что вреям начала указанно в минутах, а длительность в том числе и в секундах, то точное время окончания разговора не удастся вычислить. Нужно чтобы во времени начала были и секунды. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2009, 14:13 |
|
||
|
Вычисление количества занятых тел.линий в excel
|
|||
|---|---|---|---|
|
#18+
Djon Player, сортировать необязательно. Мой макрос работает, пусть и не самым эффективным образом, т.к. цикл. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2009, 16:45 |
|
||
|
Вычисление количества занятых тел.линий в excel
|
|||
|---|---|---|---|
|
#18+
thrasheadDjon Player, сортировать необязательно. Мой макрос работает, пусть и не самым эффективным образом, т.к. цикл.Для макроса может и не обязательно, не проверял, я имел ввиду для формулы массива. Хотя может и там не обязательно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2009, 16:51 |
|
||
|
|

start [/forum/topic.php?fid=61&msg=36384789&tid=2178659]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
157ms |
get topic data: |
6ms |
get forum data: |
1ms |
get page messages: |
32ms |
get tp. blocked users: |
1ms |
| others: | 269ms |
| total: | 491ms |

| 0 / 0 |
