VirtualIreland.ru - Виртуальная Ирландия
Вернуться   VirtualIreland.ru - Виртуальная Ирландия > Живем в Ирландии > IT и Связь

IT и Связь Обсуждение "айтишных" вопросов и средств связи

Ответ
 
Опции темы Опции просмотра
Старый 05.07.2010, 22:00   #1
Заслуженный Участник
 
Аватар для vova7777
 
Сообщений: 934
Благодарности: 616 в 285 сообщениях Поиск благодарностей vova7777
Отправить сообщение для  vova7777 с помощью ICQ
Счастье Вопросец пpо Arrays in Excel

Приветствую,

Сам я совсем не программист, поэтому прошу помощи с данной задачей:

Дано информация в столбике D,
В "A1" есть формула: Если в любой ячейки "С" появится единица то показывать инфу которая находится справа от единицы в ячейке столбика D.

Например если в D4 появится 1 то в А1 показывать инфу взятую с Е4,
или
если в D7 появится 1 то в А1 показывать инфу взятую с Е7
или
если в D3 появится 1 то в А1 показывать инфу взятую с Е3

Сампл я приложил. Обратите внимание что простой IF тянет максимум 11 колонок а мне нужно больше 100.

Вот пример который нужно переделать в array:
Код:
=IF(D1=1;E1;IF(D2=1;E2;IF(D3=1;E3;IF(D4=1;E4;IF(D5=1;E5;IF(D6=1;E6;IF(D7=1;E7;IF(D8=1;E8;IF(D9=1;E9;IF(D10=1;E10;IF(D11=1;E11;)))))))))))
В инете array только упоминается с суммой а мне нужно нечто указанное выше. Help

vova7777 добавил 05.07.2010 в 23:06
что-то xls не прикрепился.
вот здесь его можно скачать: http://rapidshare.com/files/405177829/excel-arrays.xls
или здесь: http://www.megaupload.com/?d=XMFSY2XJ

Последний раз редактировалось vova7777, 05.07.2010 в 22:06. Причина: Добавлено сообщение
vova7777 вне форума   Ответить с цитированием

Зарегистрируйтесь или войдите под своим именем, чтобы спрятать этот рекламный блок
Старый 05.07.2010, 22:54   #2
Заслуженный Участник
 
Сообщений: 1,334
Благодарности: 436 в 251 сообщениях Поиск благодарностей Юм-Юм
По умолчанию Re: Вопросец пpо Arrays in Excel

Дорогой товарищ, ты пошто подсовываешь нам HTML-файл как-то странный под видом Эксела?

Это на самом деле HTML-файл, содержащий JavaScript c каким-то тайным смыслом.
И тот, кто его написал - таких детских вопросов не задаёт. Программировнаие он знает сурово.

Так что пропало желание помогать. Хотя мог бы...
Юм-Юм вне форума   Ответить с цитированием
Старый 05.07.2010, 23:27   #3
Заслуженный Участник
 
Аватар для vova7777
 
Сообщений: 934
Благодарности: 616 в 285 сообщениях Поиск благодарностей vova7777
Отправить сообщение для  vova7777 с помощью ICQ
По умолчанию Re: Вопросец пpо Arrays in Excel

Дорогой Тoварищ,
Вы наверно никогда не пользовались файлообменниками. Там нужно зайти по ссылке, подождать Х секунд и нажать на скачать а просто забивая линк в прогу для скачки даст вам html с линком для скачки без премиум акаунта.
Сампл безвредный, там макросы не требуются. Впринципе я задачу старался подробно описать и думаю можно её понять без сампла.
vova7777 вне форума   Ответить с цитированием
Старый 05.07.2010, 23:45   #4
Practical UNIX Terrorist
 
Аватар для rojer
 
Откуда: bray.ie<-dub.ie<-msk.ru<-ykt.ru
Сообщений: 2,291
Благодарности: 1,257 в 647 сообщениях Поиск благодарностей rojer
По умолчанию Re: Вопросец пpо Arrays in Excel

я - программист, excel - это п-ц.
__________________
Even if a billion people believe something it can still be ridiculous.
rojer вне форума   Ответить с цитированием
Благодарностей: 2 от:
Epo (07.07.2010), svu (06.07.2010)
Старый 06.07.2010, 00:05   #5
Заслуженный Участник
 
Сообщений: 1,228
Благодарности: 438 в 286 сообщениях Поиск благодарностей Kot
По умолчанию Re: Вопросец пpо Arrays in Excel

Цитата:
Сообщение от vova7777 Посмотреть сообщение
Сампл я приложил. Обратите внимание что простой IF тянет максимум 11 колонок а мне нужно больше 100.
Чтото страшное вы такое задумали, правда... %)

На скоко я понял в столбце Д у вас идет последовательность 0 и 1 (если 0 - пусто). Почему не считать это двоичным представлением числа записанного сверху вниз? Если вы просуммируете взвешенные значения в соответствующих строчках (вес -номер строки сверху в степени 2), то задача сводится к поиску наименьшего "бита" в полученном числе. Наименьший бит вычисляется как побитовое "И" числа с его отрицательным значением (х & -х, тут вам нужно определить юзер дефайнед функцию, Эксель не имеет битвайз операций).

Хотя возможно Эксель тут будет несколько неуклюж

Kot добавил 06.07.2010 в 01:26
Цитата:
Сообщение от rojer Посмотреть сообщение
excel - это п-ц.
нет, он просто своеобразен... это как нарды, тоже игра на двоих и тоже на раскрывающейся коробочке, но ни на шахматы, ни на шашки не похожа...

Последний раз редактировалось Kot, 06.07.2010 в 00:26. Причина: Добавлено сообщение
Kot вне форума   Ответить с цитированием
Старый 06.07.2010, 08:27   #6
Заслуженный Участник
 
Аватар для vova7777
 
Сообщений: 934
Благодарности: 616 в 285 сообщениях Поиск благодарностей vova7777
Отправить сообщение для  vova7777 с помощью ICQ
Радость Re: Вопросец пpо Arrays in Excel

Цитата:
Сообщение от Kot Посмотреть сообщение
На скоко я понял в столбце Д у вас идет последовательность 0 и 1 (если 0 - пусто). Почему не считать это двоичным представлением числа записанного сверху вниз? Если вы просуммируете взвешенные значения в соответствующих строчках (вес -номер строки сверху в степени 2), то задача сводится к поиску наименьшего "бита" в полученном числе. Наименьший бит вычисляется как побитовое "И" числа с его отрицательным значением (х & -х, тут вам нужно определить юзер дефайнед функцию, Эксель не имеет битвайз операций).
А можно по русски или показать на примере?

Задачку нужно сделать на Excele, если это не реально то наверно прийдётся создавать extension, включать макросы и кодить в Microsoft Visual Basic. Другие варианты пока не интересны.

Цитата:
Сообщение от Kot Посмотреть сообщение
Что-то страшное вы такое задумали, правда... %)
согласен. настолько страшное что безуспешно был потрачен вечер. но очень хотелось бы...
vova7777 вне форума   Ответить с цитированием
Старый 06.07.2010, 09:28   #7
Заслуженный Участник
 
Сообщений: 3,654
Благодарности: 2,139 в 1,213 сообщениях Поиск благодарностей Yury
По умолчанию Re: Вопросец пpо Arrays in Excel

Вот например решение (если я правильно понял задачу)
ввести array формулу (с Ctrl+Shift+Enter)
=INDIRECT("e"&SMALL(IF(D:D=1,ROW(D:D),1000000),1))

только надо вместо 1000000 поставить большое значение, больше которого данных не будет.
Yury вне форума   Ответить с цитированием
Старый 06.07.2010, 11:26   #8
Заслуженный Участник
 
Сообщений: 1,334
Благодарности: 436 в 251 сообщениях Поиск благодарностей Юм-Юм
По умолчанию Re: Вопросец пpо Arrays in Excel

Цитата:
Сообщение от vova7777 Посмотреть сообщение
Там нужно зайти по ссылке, подождать Х секунд и нажать на скачать
Я так и сделал. Мне скачался xls-файл.

Но сейчас проверю ещё раз. Может, мне подгадил Downloader

Последний раз редактировалось Юм-Юм, 06.07.2010 в 11:34.
Юм-Юм вне форума   Ответить с цитированием
Старый 06.07.2010, 11:49   #9
Пенсионер всея Ирландея
 
Аватар для magician
 
Откуда: StormWind city
Сообщений: 15,195
Благодарности: 9,619 в 3,376 сообщениях Поиск благодарностей magician
По умолчанию Re: Вопросец пpо Arrays in Excel

Цитата:
Сообщение от Юм-Юм Посмотреть сообщение
под видом Эксела?
Цитата:
Сообщение от Юм-Юм Посмотреть сообщение
Так что пропало желание помогать. Хотя мог бы...
Цитата:
Сообщение от Юм-Юм Посмотреть сообщение
Мне скачался xls-файл.
парадокс ...xls и есть эксель
... так чо может не стоит помогать ?

Цитата:
Сообщение от vova7777 Посмотреть сообщение
В инете array только упоминается с суммой а мне нужно нечто указанное выше. Help
не могу вытянуть файл с работы - вечером гляну

в 2х словах , синтакс сам проверяй
Dim MyArray(0) as string
For counter = 1 to 65535
if "Сдесь"(Колонка:Couynter) = чонадо then
redim preserve MyArray(Ubound(myarray)+1)
Ubound(myarray) = то чо надо
endif
next counter

это имелось ввиду или я вопрос недопонял
__________________
невозможно испугать санкциями того, кому похер, так,что санкции против меня на этом форуме, мне феерически похер
magician вне форума   Ответить с цитированием
Старый 06.07.2010, 12:01   #10
Заслуженный Участник
 
Сообщений: 1,334
Благодарности: 436 в 251 сообщениях Поиск благодарностей Юм-Юм
По умолчанию Re: Вопросец пpо Arrays in Excel

Цитата:
Сообщение от vova7777 Посмотреть сообщение
Сампл безвредный, там макросы не требуются.
Да, это правда. Меня подвёл Free Download manager.

Глубоко извиняюсь. Сейчас помогу

Итак, слушайте.

Проще всего решить эту проблему, прикрутив к листу небольшой код на VBA

Надо зайти в редактор Visual Basic (Alt + F11), увидеть слева название рабочего листа и дважды кликнуть на нём.

Справа будет пустое окно, в который надо вводить код.

Вот этот:
Код:
'Функция ищет единицу в столбце 4 (D)
'и когда находит первую единицу в столбце  - возвращает содержимое соседней ячейки в столбце 5 (E)
Function strannoe() As Variant

    strannoe = "" 'Это если нет единиц в столбце D
    
    Dim ws As Worksheet
    Set ws = Me 'Ищем на листе, к которому прикреплён модуль
  
    'Проходим столбец D -- ищем единицу
    Dim i As Long  'Номер строки
    For i = 1 To 65535
    
        If (ws.Cells(i, 4).FormulaR1C1 = 1) Then '4 -- это номер столбца "D"
            strannoe = ws.Cells(i, 5).FormulaR1C1
            Exit For
        End If
        
    Next i
    
End Function

'Процедурка выполняется при каждом изменении листа
Private Sub Worksheet_Change(ByVal Target As Range)
    If (Target.Column = 4) Then 'Изменения -- в столбце 4
        'В ячейку А1 добавляем результат функции strannoe()
        Me.Cells(1, 1).FormulaR1C1 = strannoe()
        ActiveWorkbook.Save 'Сохраним изменения

    End If
End Sub
И всё заработает так, как Вы описали. Проверил только что.

Обратите внимание: непонятно из Вашего описания, что должно вывестись в А1, если единиц несколько в столбце D. Я ищё первую единицу -- и выводу её соседа справа.

Если есть вопросы -- задавайте

Последний раз редактировалось Юм-Юм, 06.07.2010 в 13:08. Причина: Добавлено про Alt + F11
Юм-Юм вне форума   Ответить с цитированием
Благодарность от:
vova7777 (06.07.2010)
Старый 06.07.2010, 13:24   #11
Заслуженный Участник
 
Аватар для vova7777
 
Сообщений: 934
Благодарности: 616 в 285 сообщениях Поиск благодарностей vova7777
Отправить сообщение для  vova7777 с помощью ICQ
Радость Re: Вопросец пpо Arrays in Excel

Спасибо вам Юм-Юм!
Действительно работает. Теперь ради спортивного интереса хочется посмотреть или это реально сделать без макросов с Array.

Юра,
Попробовал ваш array, не совсем работает. работает только когда "1" ставить перед первой ячейкой а иначе показывает инфу с последней.

Код:
=INDIRECT("e"&SMALL(IF(D:D=1;ROW(D:D);14);1))
vova7777 вне форума   Ответить с цитированием
Старый 06.07.2010, 13:36   #12
Заслуженный Участник
 
Сообщений: 3,654
Благодарности: 2,139 в 1,213 сообщениях Поиск благодарностей Yury
По умолчанию Re: Вопросец пpо Arrays in Excel

Цитата:
Сообщение от vova7777 Посмотреть сообщение
Юра,
Попробовал ваш array, не совсем работает. работает только когда "1" ставить перед первой ячейкой а иначе показывает инфу с последней.

Код:
=INDIRECT("e"&SMALL(IF(D:D=1;ROW(D:D);14);1))
скорее всего, вы вводите обычную формулу, а не массивную.
если после ввода, формула не появляется в фигурных скобках, то точно проблема в этом. надо обязательно нажимать Ctrl+Shift+Enter каждый раз при редактировании этой ячейки - иначе получается обычная формула
Изображения
Тип файла: png array_formula.PNG (48.5 Кбайт, 51 просмотров)

Последний раз редактировалось Yury, 06.07.2010 в 14:33.
Yury вне форума   Ответить с цитированием
Благодарность от:
vova7777 (06.07.2010)
Старый 06.07.2010, 18:24   #13
Заслуженный Участник
 
Аватар для vova7777
 
Сообщений: 934
Благодарности: 616 в 285 сообщениях Поиск благодарностей vova7777
Отправить сообщение для  vova7777 с помощью ICQ
Радость Re: Вопросец пpо Arrays in Excel

Работает. Юра, это именно то что нужно.
Всем спасибо.
vova7777 вне форума   Ответить с цитированием

Зарегистрируйтесь или войдите под своим именем, чтобы спрятать этот рекламный блок
Старый 10.07.2010, 11:40   #14
Заслуженный Участник
 
Аватар для vova7777
 
Сообщений: 934
Благодарности: 616 в 285 сообщениях Поиск благодарностей vova7777
Отправить сообщение для  vova7777 с помощью ICQ
Радость Re: Вопросец пpо Arrays in Excel

Формула компактная но после 5й такой формулы учитывая что каждая работает с сотней данных, мой ексель стал не совсем быстро работать.
приходится ждать 2-4секунды пока все формулы сделают свою работу.
Это учитывая что у меня два ядра по 2.5Ghz , рама на 4гб и SSD extreme edition.


Давайте вернёмся к Microsoft Visual Basic и варианту предложенным Юм-Юм. Возможно этот вариант не будет так тормозить.
Единственная проблема с предложенным кодом: если в колонке с информацией не информация а ссылка на информацию то ничего не получается.

Ссылка может быть просто =F7 или простая формула типа =Q7-G7

например: Если единицу ставим возле ячейки с формулой to в А1 должен быть показан результат формулы.
vova7777 вне форума   Ответить с цитированием
Старый 12.07.2010, 13:31   #15
Активный Участник
 
Аватар для maxiiiim
 
Сообщений: 241
Благодарности: 85 в 39 сообщениях Поиск благодарностей maxiiiim
По умолчанию Re: Вопросец пpо Arrays in Excel

А шо
A1=vlookup(1,D:E,2,0)

не катит?
maxiiiim вне форума   Ответить с цитированием
Благодарность от:
vova7777 (12.07.2010)
Ответ

Ключевые слова
excel arrays help



Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать на сообщения
Вы не можете добавлять вложения
Вы не можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщ.
Excel to SQL DTS(SSIS) не фурычит :( Dubliner IT и Связь 9 29.04.2010 21:12
Покупаю билеты - вопросец. Doc Путешествия и Отдых 26 18.11.2008 14:37
Помогите с Excel GOOSE IT и Связь 7 24.01.2006 23:18
MS'SQL вопросец Arte IT и Связь 8 17.10.2005 13:45


Часовой пояс GMT, времени сейчас: 06:38.


vBulletin®, Copyright ©2000-2025, Jelsoft Enterprises Ltd., Русификация: zCarot, Vovan & Co
©2003-2025 VirtualIreland.ru - Виртуальная Ирландия