Я хочу, чтобы ячейки были исключены из формулы массива при создании массива, поскольку в этих ячейках нет массива. Это возможно?
На этом рисунке левая таблица — это данные, которые я использую для составления отчетов в центре и справа. В реальной электронной таблице данные распределяются по нескольким листам, и каждый месяц добавляются новые или новые таблицы.
В настоящее время центральная таблица — это то, что создает массив для вывода, это приводит к дублированию сумм в строках, где номер задачи для подэлементов. Я не могу (не могу) удалить номер задачи для этих подпунктов.
Таблица справа — это то, что у меня есть в настоящее время, с формулой в каждом из заполненных полей суммы. Однако, поскольку эта формула на самом деле состоит из нескольких сумм для разных таблиц данных, я бы хотел обновить только одну ячейку и нажать CTRL+SHIFT+ENTER, чтобы обновить весь столбец ячеек. В этой таблице также указаны ячейки, в которые я бы хотел поместить массив.
Формула из фактического листа:
=SUMIFS('April 18'!S:S,'April 18'!M:M,Summary!A:A,'April 18'!O:O,"4.2018")+SUMIFS('May 18'!T:T,'May 18'!N:N,Summary!A:A,'May 18'!P:P,"4.2018")+SUMIFS('July 18'!$U:$U,'July 18'!$N:$N,Summary!$A:$A,'July 18'!$Q:$Q,"4.2018")+SUMIFS('June 18'!$U:$U,'June 18'!$N:$N,Summary!$A:$A,'June 18'!$Q:$Q,"4.2018")
Lots of little things to assume here, but as they say, the devil is in the details.
My assumptions will be that the Task Numbers for subitems are identical to the non-subitem that will lead them in the table. As an example, cell K3 contains a non-subitem since it is the first of one or more that have a particular Task Number. K4, K5, and K6 have subitems because their Task Numbers are the same as K2’s Task Number.
If this is so, you can use the following formula in column L’s cells:
=IF(J2=J1,"",SUMIFS($C:$C,$A:$A,$F$3:$F:$13,$B:$B,"7.2018")
For the successful IF()
tests, if you need 0’s instead of «», just change that part. An example of when issues can arise would be some ways of adding the values in this column (column L). If you’d like the cells blank, yet having a 0 for that kind of concern, just format the column so that the third formatting parameter (for when a cell equals 0) as nothing. For example: 0,000.00;-0,000.00;
and cells with a value of 0 will display as blank.
The rest of the formula is the formula the picture shows.
If this is not a correct assumption about non-subitems and subitems, all is not lost. You surely have some way we do not see of identifying subitems as such. And presumably non-subitems as such. Just use the same approach above, but use that way you have for identifying the difference between items. I used the method I did since it looks like it is valid and let the solution be complete in what is presented. But the cleanest way is using whatever way you have to identify the difference.
I point out that you must surely have one because of the indentation of subitems. That has to happen due to some known difference. It is not something that Excel would bring along with a value found somewhere. It WILL do that with numbers if a cell with default formatting gets a formula referring to some formatted cell. But not strings. So there must be some way. Just check for that difference in the IF()
test.
I’m using a tabArray on a worksheet that will cycle through cells F13, F17, and so on until F31 (All Odd numbered cells). Each cell is a drop down for a user to make a selection. If the cell in the array has a background that is grey, I want it to skip to the next cell in the array. For example, F21 has a grey background, however, if I make a selection in F13, the next cell that it moves to is F23. Every cell I make a selection change before cell F21 will automatically move to F23.
I’ve tried «Exit For» and «GoTo» with no success.
tabArray = Array ("F13","F15","F17","F19","F21","F23","F25")
For I = LBound(tabArray) to UBound (tabArray)
If tabArray(I) = target.address(0,0) then
If I = UBound(tabArray) then
Me.Range(tabArray(LBound(tabArray))).Activate
Else
Me.Range(tabArray(I+1)).Activate
end if
ElseIf Range(tabArray(I)).Interior.Colorindex = 15 then
If I = UBound(tabArray) then
Me.Range(tabArray(LBound(tabArray))).Activate
Else
Me.Range(tabArray(I+1)).Activate
end if
end if
Next I
If the cell background is grey for F23 and I make a selection in F13, I want the next cell that it moves to is F15, but the actual output is that it moves to cell F25.
Есть столбец «А» с данными, но данные идут не подряд, а вразнобой, т.е. 1 ячека с данными следующие 4 пустые, затем опять с данными, следующие 3 пустые и т.д. закономерности нет. Нужна формула, чтобы например эти данные копировались в соседний столбец «B» и причём без пустот — друг за другом, т.е. формулой можно заполнить весь диапазон столбца «B» и когда появляется в столбце «А» следующее значение, то оно сразу копируется в «B», но только друг за другом без пустых строк.
Заранее спасибо.
Данные текстовые или числовые? Возможен ли перенос в отсортированном порядке (если числа)?
Webmoney: E350157549801 Z116603216205 R268084006579
Это проделать хотелось бы с датой и со значениями формул. Т.е. если точнее, то колонка с датами (они в разнобой), напротив этих дат ячейки со значениями получаемых в результате формул (они параллельны датам)
«А» «D»
дата формула
3 пустые строки
дата формула
4 пустые строки
дата формула
и т.д.
Нужно что бы они попадали на другой лист, все вместе в этом же порядке, но без пустых строк:
«А» «B»
дата значение взятое из формулы на первом листе
дата значение взятое из формулы на первом листе
дата значение взятое из формулы на первом листе
или так — ставим фильтр на колонку А раскрываем фильтр, убираем галочку «Выделить все» идем вниз списка фильтра, ставим галочку у «пустые», нажимаем OK выделяем все строки и из контекстного меню вызываем «удалить строку». Все пустые строки при этом будут удалены.
На первом листе с данными:
«А» «D»
дата формула
3 пустые строки
дата формула
4 пустые строки
дата формула
трогать и удалять пустые строки нельзя, дело в том что они не совсем пустые — между колонками «А», «D» есть ещё колонки «B» и «C», а они не пустые, ячейки которые пусты, они пусты, только в колонках «А» и «D». Фильтр тут не поможет, данные нужны на другом листе идущие без пустых ячеек не для того чтобы их лицезреть, а там будет целая таблица расчётов, колонки «А» и «С» на другом листе будут являться началом таблицы.
http://narod.ru/disk/23582366000/home.zip.html
Прилагаю файл, участвуют в выше сказанном «Лист1» и «Лист3». В этом файле много не решенных задач и вопросов куча, но этот на данный момент самый приоритетный. Решил как-то дозировано разобраться. Сразу скажу — это не для учёбы и каких-то там курсовых
Пытаюсь понять принцип работы формулы. Вроде прикольно, но дополнительный столбец очень не кстати, получается его ещё нужно ручками забивать числами на единицу большими предыдущей даты.
На листе3 пытался формулу распространить на весь столбец — не выходит. Не могу понять — почему?
С помощью небольшого макроса попробуйте
Не торопись, и все успеешь намного быстрее
Я использую такую формулу массива:
={ИНДЕКС($A$1:$A$1000;НАИМЕНЬШИЙ(ЕСЛИ($A$1:$A$1000=»»;66000;СТРОКА($A$1:$A$1000));СТРОКА());1)}
На картинке видно что и где…
Да и формула выдает #ССЫЛКА!, когда заканчиваются исходные данные и далее идут одни пустые ячейки, можно в самой формуле это предусмотреть (тогда она станет больше), но мне, например, проще удалить ошибки. В пользу производительности т.с.
Цитата: lema от 10.08.2010, 10:40
Пытаюсь понять принцип работы формулы. Вроде прикольно, но дополнительный столбец очень не кстати, получается его ещё нужно ручками забивать числами на единицу большими предыдущей даты.
На листе3 пытался формулу распространить на весь столбец — не выходит. Не могу понять — почему?
Цитата: sergo44441 от 10.08.2010, 10:54
С помощью небольшого макроса попробуйте
вообщето на листе 1 незнаю зачем написал еще условие с если
там просто можно СЧЕТЗН()
а вот что значит распространить на весь столбец? ну берем и копируем. если значение не найдено возвращается ошибка, которую можно скрыть с помощью ЕСЛИОШИБКА (2007 офис) или ЕОШИБКА (2003)
а там смотрите сами
Цитироватьа вот что значит распространить на весь столбец
Да мелочь — в смысле выделяю ячейку с формулой, затем выделяю весь столбец и вставляю — получается одинаковая дата во всех столбцах, а если выделил формулу и вставил ручками в выбранное кол-во ячеек(которые ниже идут) то всё нормально. Кстати, оказывается достаточно в первом столбце только напротив даты цифры ставить, а это уже здорово. Я грешным делом подумал, что до следующей даты всё забито должно быть одинаковой цифрой.
Сейчас «поиграюсь» с тем что уважаемый Василий написал. Посмотрю что получится
Выложите картинку с примером, как формула должна считать, выделите цветом диапазон, который она должна просуммировать.
А это из файла который я выложил выше:
«D2» считает сумму С3:С6 и далее по такому же принципу. В колонке D хотелось размножить некую формулу на весь столбец. Количество значений в колонке С всё время разное, т.е. не стабильно. Вот вбиваю я значения ручками в колонке С, а в ячейке точно напротив даты в колонке D (те что помечены голубым) выводится их сумма. Диапазон получается почти всё время разный (до пустой ячейки). Обычно приходится становится в ячейку голубую, нажимать сумму и выделять диапазон — всё руками.
С помощью макроса можно такое сделать
Не торопись, и все успеешь намного быстрее
Цитата: sergo44441 от 10.08.2010, 17:50
С помощью макроса можно такое сделать
Да я вних ни чего не смыслю, думал за счёт формул. Макросы даже когда пишут на форумах, я не знаю куда их пихать и что сними делать
а с помощью формул массива — вот так.
Если же Вы решитесь заменить пробелы между рядами чисел любым наперед известным символом, то формулу можно будет еще больше упростить и отказаться от необходимости использовать формулу-массива — можно будет использовать функцию ПОИСКПОЗ(Символ,СМЕЩ(…),0)
P.S. Да, у функции есть ограничение — если ряд чисел может быть более 100, то в функцию необходимо внести корректировку в этом месте: ДВССЫЛ(«1:100«)
Т.е. в ручную придётся какой-то символ параллельно вбивать? Если так то получается + на —
Не шибко это прибавит функциональности. Или я недопонял?
Такой вариант:
=ЕСЛИ((B1=»»)*(B2<>»»);СУММ(B2:ИНДЕКС(B2:B100;ПОИСКПОЗ(«»;B2:B100&»»;)));»»)
Массив
Webmoney: E350157549801 Z116603216205 R268084006579
Цитата: kimtan от 11.08.2010, 01:23
Такой вариант:
=ЕСЛИ((B1=»»)*(B2<>»»);СУММ(B2:ИНДЕКС(B2:B100;ПОИСКПОЗ(«»;B2:B100&»»;)));»»)
В точку! Только в моём варианте если точно, вот так выглядит:
{=ЕСЛИ((C2=»»)*(C3<>»»);СУММ(C3:ИНДЕКС(C3:C100;ПОИСКПОЗ(«»;C3:C100&»»;)));»»)}
Всё чётко работает.
Спасибо большое!
1 / 1 / 0 Регистрация: 09.08.2010 Сообщений: 5 |
|
1 |
|
Как формуле пропустить пустые ячейки?09.08.2010, 20:01. Показов 22634. Ответов 2
Есть столбец «А» с данными, но данные идут не подряд, а вразнобой, т.е. 1 ячека с данными следующие 4 пустые, затем опять с данными, следующие 3 пустые и т.д. закономерности нет. Нужна формула, чтобы например эти данные копировались в соседний столбец «B» и причём без пустот — друг за другом, т.е. формулой можно заполнить весь диапазон столбца «B» и когда появляется в столбце «А» следующее значение, то оно сразу копируется в «B», но только друг за другом без пустых строк.
0 |
КотЪ 219 / 219 / 60 Регистрация: 26.05.2009 Сообщений: 688 |
|
11.08.2010, 18:51 |
2 |
Непонятно, зачем. Если потом с этими данными будет работать какая-то формула, то она просто пропустит пустые ячейки.
0 |
1 / 1 / 0 Регистрация: 09.08.2010 Сообщений: 5 |
|||||
12.08.2010, 13:25 [ТС] |
3 |
||||
Непонятно, зачем. Если потом с этими данными будет работать какая-то формула, то она просто пропустит пустые ячейки. На самом деле мне нужен был принцип, всё выглядит несколько сложнее. Я уже нашел решение более подробно это можно узнать на другом форуме:
Добавлено через 1 час 54 минуты ссылки на посторонние форумы запрещены. если несложно, можно выложить саму суть решения? Ух, я думал все форумы програмистов — братья )
1 |