Ru-Board.club
← Вернуться в раздел «Программы»

» Excel FAQ (часть 5)

Автор: VicKos
Дата сообщения: 10.06.2011 18:17
InSe0F

Цитата:
я так полагаю единственный вариант переходить к макросу?

Макрос тоже не панацея, если условия будут постоянно изменяться.
Автор: kimtan
Дата сообщения: 10.06.2011 19:00
InSe0F
Узнаю свою формулу, но помогать Вам не намерен пока не будет нормального примера с объяснениями в виде файла *.xls
Удачи!
Автор: InSe0F
Дата сообщения: 11.06.2011 00:29

Цитата:
Макрос тоже не панацея, если условия будут постоянно изменяться.

ну почему же - если функция будет искать в Н условий по Н ячейкам - универсальная должна быть


Цитата:
Узнаю свою формулу, но помогать Вам не намерен пока не будет нормального примера с объяснениями в виде файла *.xls

вот

например для Сидоров'а должен выводиться наставник Виненко у которого указана Наставник в "Роль2"

http://d.pr/MiRZ
Автор: kimtan
Дата сообщения: 11.06.2011 11:53
InSe0F
Вот вам универсальная формула массива:

=ЕСЛИОШИБКА(ПРОСМОТР(2;1/(([@Кафедра]=тНаставники[Кафедра])*(МУМНОЖ(--(тНаставники[[Роль 1]:[Роль 2]]="Наставник");ТРАНСП(СТОЛБЕЦ(тНаставники[[#Заголовки];[Роль 1]:[Роль 2]])^0))>0));тНаставники[Преподаватель]);"")

Ключевые моменты выделил жирным шрифтом.
Автор: VicKos
Дата сообщения: 11.06.2011 19:15
kimtan
Извините, что вмешиваюсь, но...
Если в таблице тНаставники переместить третью строку с преподавателем Кузнецовым на место первой строки, ваша новая формула вместо Кузнецова выдаёт ассистента Филкина (впрочем, он тоже "наставник", так что не уверен, ошибка ли это). Видимо, ищется последняя, удовлетворяющая критериям поиска, запись в таблице.
Автор: kimtan
Дата сообщения: 11.06.2011 21:37

Цитата:
Видимо, ищется последняя, удовлетворяющая критериям поиска, запись в таблице.


Именно так формула работала с самого начала, и так продолжает работать



Добавлено:
Для того, чтобы возвращала первую запись, нужно внести небольшие изменения:

=ЕСЛИОШИБКА(ИНДЕКС(тНаставники[Преподаватель];ПОИСКПОЗ(1;1/(([@Кафедра]=тНаставники[Кафедра])*(МУМНОЖ(--(тНаставники[[Роль 1]:[Роль 2]]="Наставник");ТРАНСП(СТОЛБЕЦ(тНаставники[[#Заголовки];[Роль 1]:[Роль 2]])^0))>0));));"")
Автор: InSe0F
Дата сообщения: 11.06.2011 22:41
kimtan
спасибо)

да и если можно немного пояснить работу МУМНОЖ , с двойным отрицанием...
Автор: kimtan
Дата сообщения: 12.06.2011 16:10
Что конкретно непонятно?
Как работает МУМНОЖ() или для чего в формуле используется бинарное отрицание?
Автор: InSe0F
Дата сообщения: 12.06.2011 17:13

Цитата:
для чего в формуле используется бинарное отрицание

это первое

Цитата:
ТРАНСП(СТОЛБЕЦ(тНаставники[[#Заголовки];[Роль 1]:[Роль 2]])^0))>0))

от сюда я как понял мы массив/матрицу единиц) только не понятно зачем она 1*1 все равно 1...
Автор: kimtan
Дата сообщения: 12.06.2011 17:28
Бинарное отрицание используется для преобразования массива логических ИСТИНА и ЛОЖЬ, полученных в результате сравнения: (тНаставники[[Роль 1]:[Роль 2]]="Наставник"), в числа, соответственно в 1 и 0, так как МУМНОЖ() понимает только числовые массивы.

СТОЛБЕЦ(тНаставники[[#Заголовки];[Роль 1]:[Роль 2]])^0 возвращает горизонтальный массив состоящий из двух единиц. Транспонируем его в вертикальный массив (требуется для корректной работы во втором аргументе функции МУМНОЖ() - "массив2"). Подробнее про работу функции МУМНОЖ() можно почитать в справке Excel.
Автор: NEW_MAKC
Дата сообщения: 15.06.2011 16:35
1. можно ли как то вставлять примечания к ячейкам из текстовых файлов (чтоб не копипастить)
2. как сделать чтоб размер примечаний автоматически подстраивался под содержимое
Автор: asbo
Дата сообщения: 15.06.2011 16:51
NEW_MAKC
2. На примечании ПКМ Формат примечания - Выравнивание - Автоматический размер

1. Думаю только плагином. Т.е. есть набор текстовых файлов, содержимое каждого из которых должно попасть в собственное примечание?
Автор: InSe0F
Дата сообщения: 15.06.2011 17:31
Всем спасибо за помощь, тут возник еще один вопрос, скорее правда по функционалу, но все же.
В 1С есть очень удобная функция под названием "Отбор по текущему значению", ну или что-то этом роде - суть в том, что когда у тебя выделена какая то ячейка, при нажатии на эту волшебную кнопку в текущем столбце просиходит установка фильтрации, где значение фильтра = Значению ячейки
Можно либо подобное реализовать в Excel?
Ибо иногда жутко не удобно, когда необходимо сделать отбор при нахождении в текущей ячейки а самих вариаций отборов очень многи и приходится долго листать список фильтрации для поиска необходимого значения...
Автор: KF121
Дата сообщения: 15.06.2011 18:13
InSe0F
а чем не подходит этот вариант?
Автор: asbo
Дата сообщения: 15.06.2011 18:20
InSe0F
Или выбросить на панель подсказанную KF121 кнопку (в 2003 еще нет ее),

или сделать свою и назначить на нее процедуру. А внутри процедуры уже упражняться, как душа велит :)

Sub sb_AutoFilter()
ActiveCell.AutoFilter Field:=1, Criteria1:=ActiveCell.Value
End Sub
Автор: NEW_MAKC
Дата сообщения: 15.06.2011 18:42

Цитата:
NEW_MAKC
2. На примечании ПКМ Формат примечания - Выравнивание - Автоматический размер

1. Думаю только плагином. Т.е. есть набор текстовых файлов, содержимое каждого из которых должно попасть в собственное примечание?


блин, пробовал такой вариант (по вопросу 2) - ничего не получалось. сейчас получилось..... спасибо

по вопросу 1 - ну грубо говоря - хочу примечание, нажимаю "добавить примечание" и там функция "добавить из файла" - что то типа этого
Автор: asbo
Дата сообщения: 15.06.2011 19:12

Цитата:
хочу примечание, нажимаю "добавить примечание" и там функция "добавить из файла" - что то типа этого

Стандартным интерфейсом это не сделать. Концептуально это будет выглядеть так: на пользовательскую кнопку вешаем процедуру. Из процедуры вызываем диалог, в которм укажем файл с комментарием, читаем его, содержимое загоняем в примечание. Только это ужЕ в смежную тему.
Автор: InSe0F
Дата сообщения: 15.06.2011 20:01
asbo

Цитата:
Или выбросить на панель подсказанную KF121 кнопку (в 2003 еще нет ее),

а как она наызвается в списке команд а то по аналогичному на Фильтр.. я ничего не нашел
вообще пробежался по всем ничего подобного не встретил.. Подскажите мож не там смотрю
Автор: asbo
Дата сообщения: 15.06.2011 20:18

Цитата:
а как она наызвается
, я же говорю - нет ее в 2003 :)) А структуру контекстного меню после я не знаю. Внимательно пошариться надо в ПКМ на панели инструментов - Настройки. Я про этот риббон ваще ничего не знаю. И не хочу знать :)
Автор: InSe0F
Дата сообщения: 16.06.2011 09:33

Цитата:
Внимательно пошариться надо в ПКМ на панели инструментов

все обшарил.. http://d.pr/PwkG не нашел или она как то называется по другому... (

Добавлено:

Цитата:
Sub sb_AutoFilter()
ActiveCell.AutoFilter Field:=1, Criteria1:=ActiveCell.Value
End Sub

а куда положить его чтобы он был автоматом во всех книгах?
Автор: aidomars
Дата сообщения: 16.06.2011 09:50
asbo
ИМХО надо поправить
Sub sb_AutoFilter()
ActiveCell.AutoFilter Field:=ActiveCell.Column, Criteria1:=ActiveCell.Value
End Sub
Автор: asbo
Дата сообщения: 16.06.2011 09:53
InSe0F

Цитата:
а куда положить его чтобы он был автоматом во всех книгах?

Э-э... батенька... так дела не делаются :) Куда положить... Ну не на Альфу же. Ты номер своей планеты в центуре знаешь?

Создается новая книга, в нее помещается этот код и сохраняется, как надстройка (xla). Файл кладется в заветное место на диске. Снова запускается Ексель и подключается эта надстройка. Теперь все, что она содержит, будет доступно Екселю в виде пользовательских ф-ций и процедур.

Добавлено:
aidomars, вай... Не знаю... Щаз посмотрю. Но я точно помню - не в первой колонке я был.


Добавлено:
aidomars
Совточно.
Field:The integer offset of the field on which you want to base the filter (from the left of the list; the leftmost field is field one).

Транс-формИруюсь!
Sub sb_AutoFilter()
With ActiveCell
.AutoFilter Field:=.Column, Criteria1:=.Value
End With
End Sub
Автор: Mushroomer
Дата сообщения: 16.06.2011 10:24
InSe0F, aidomars, asbo
Убедительная просьба для дальнейшего обсуждения перейти в топик по VBA для Excel http://forum.ru-board.com/topic.cgi?forum=33&topic=10903&glp
Заранее спасибо.
Автор: asbo
Дата сообщения: 16.06.2011 10:43
Mushroomer, сорри. Бес попутал - был уверен, что в VBA торчим :)
Автор: aidomars
Дата сообщения: 16.06.2011 10:58
Mushroomer
Ну как бы кнопачку сделали для Excel, фильтр просто красата), просто вопрос плавно перетек из Excel в Excel VBA. Сорри если шо)
Автор: SFC
Дата сообщения: 16.06.2011 12:25
В формуле SUMMIF возможно ли сделать проверку двух условий?
Так работает:
СУММЕСЛИ(O5:O35;B40;U5:U35)
Если В40 совпадает с О... , то берется соответствующее U...

А хочется чтобы:
сравнивалось В40 с О... и А40 с К5:K35 и если оба условия совпадают, то тогда бы бралось соответствующее U...

Автор: aidomars
Дата сообщения: 16.06.2011 12:42
Формула массива, навскидку
СУММЕСЛИ((O5:O35=B40)*(K5:K35=A40)*(U5:U35))
Автор: SFC
Дата сообщения: 16.06.2011 12:57

Цитата:
Формула массива, навскидку
СУММЕСЛИ((O5:O35=B40)*(K5:K35=A40)*(U5:U35))

Спасибо. Чтото не работает, аргументов должно быть три в формуле. Замена звездочек на ; разделители также ни чего не дает
Автор: aidomars
Дата сообщения: 16.06.2011 13:56
SFC
Ясно, измени СУММЕСЛИ на СУММ и будет сумма по третьему столбцу при совпадении двух условий
Автор: SFC
Дата сообщения: 16.06.2011 14:49
Формула отображает #value, а при нажатии на fx результат видно, что правильный.

Добавлено:
Большое спасибо за подсказку - заработало. Сменил на SUMPRODUCT.

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121

Предыдущая тема: Trojan Remover 6.81 Build 2594


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.