Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Работа с MS Office > Help!!! Excel


Автор: mcoracle 25.3.2007, 21:57
1.Создать таблицу следующей формы:

код спецыальности          фио абитуриента       количество балов           результат екзаменов

------------------------           --------------------------     ------------------------       -------------------------------

заполнить 1,2,3 колонки даными

2.сделать обчислении 4 ой колонки таким образом: Если количество балов >=15,то в 4 колонку заноситься"екзамен сдан",если <15 балов,то "екзамен провалено"

3.Обеспечить автоматизацию расчетов.

4.Обчислить общее,максимальное, среднее количество балов

5.Отфильтровать даные таблицы,использую фильтр с следующим условием: количество балов было не меньше 45 и не больше 70.

6.Сделать Диаграму



Пожалуйста, если кто может скажите хотя бы как 2-ое задание сделать.

Автор: kit_kat 26.3.2007, 02:18
=ЕСЛИ(ИЛИ(C1>15; C1=15);"Экзамен сдан";"Экзамен не сдан")

Вставить формулу, при условии что балл в ячейке C1

Автор: mihanik 26.3.2007, 07:07
Это больше с использованием офиса.

Посему переношу...

Автор: Maker 12.4.2007, 18:41
Имеем: Workbook в котором содержатся 10 Worksheets. В ячейке (cell) B1 каждого их Worksheets есть цифра.

Задача: Выстроить столбиком А1:А10 в новом Worksheet содержание ячейки B1 с каждого листа, так, чтобы 
в ячейке A1 было содержание ячейки B1 из Sheet 1
в ячейке A2 было содержание ячейки B1 из Sheet 2
в ячейке A3 было содержание ячейки B1 из Sheet 3
и т.д.

На вид довольно простая задача, но выполтить ее мне не удалось.

Автор: Genyaa 12.4.2007, 21:24
Если трехмерных ссылок недостаточно для решения (т.е. необходимо именно выбрать значения из каждого листа, а не вычислять какой-нибудь обобщенный результат из значений этих ячеек с помощью функций СУММ, СРЗНАЧ, СРЗНАЧА, СЧЁТ, СЧЁТЗ, МАКС, МАКСА, МИН, МИНА, ПРОИЗВЕД, СТАНДОТКЛОН, СТАНДОТКЛОНА, СТАНДОТКЛОНП, СТАНДОТКЛОНПА, ДИСП, ДИСПА, ДИСПР и ДИСПРА), то исключительно стандартных встроенных средств Excel будет недостаточно, ибо...

чтобы решить эту задачу через формулы необходимо, чтобы был известен полный список имен листов, значения ячеек которых необходимо получить в нужном листе. К сожалению ни одна функция Excel не дает возможности получить этот список или обратиться к листам по номерам (хотя по моему мнению, это было бы весьма полезно).

А чтобы решать подобного рода задачи я давно пользуюсь таким макросом:

Код

Sub ListOfSheets()
' программа составления списка выделенных листов
    Dim c As Range
    Set c = Application.InputBox(prompt:="Укажи, куда записать имена выделенных листов:", Type:=8)
    For i = 1 To ActiveWorkbook.Sheets.Count
        c.Cells(1, 1).Offset(i - 1, o).Value = Sheets(i).Name
    Next
End Sub


Перед запуском этого макроса нужно выделить те листы книги, список которых нужно получить в столбец под указываемой в процесе отработки процедуры.

В результате получим список имен нужных листов книги... например в ячейках A1:A10. Далее в B1 пишем такую формулу:

=двссыл(адрес(1;2;;;А1))

и копируем ее в B1:B10 - получится список значений ячейки B1 из десяти листов, имена которых мы получили в столбце А.

Добавлено через 11 минут и 47 секунд
А вот если использовать такую пользовательскую функцию, то доступ к листу по номеру будет очень удобен:

Код

Public Function OffsetSheet(r As Range, n As Long) As Range
'пользовательская функция вернет ссылку на область ячеек в листе, отстоящем на указанное число листов n от листа, где расположена область, указанная в параметре r
    Set OffsetSheet = Worksheets(r.Parent.Index + n).Range(r.Address)
End Function


Теперь с использованием этой функции решение Вашей задачи будет очень простым:
- в ячейку А1 пишем формулу =OffsetSheet($B$1;СТРОКА())
- копируем эту формулу в область A1:A10
- получили список значений ячеек B1 десяти следующих за текущим листов книги.

Автор: Maker 12.4.2007, 23:13
Цитата(Genyaa @ 12.4.2007,  21:24)
Если трехмерных ссылок недостаточно для решения (т.е. необходимо именно выбрать значения из каждого листа, а не вычислять какой-нибудь обобщенный результат из значений этих ячеек с помощью функций СУММ, СРЗНАЧ, СРЗНАЧА, СЧЁТ, СЧЁТЗ, МАКС, МАКСА, МИН, МИНА, ПРОИЗВЕД, СТАНДОТКЛОН, СТАНДОТКЛОНА, СТАНДОТКЛОНП, СТАНДОТКЛОНПА, ДИСП, ДИСПА, ДИСПР и ДИСПРА), то исключительно стандартных встроенных средств Excel будет недостаточно, ибо...

чтобы решить эту задачу через формулы необходимо, чтобы был известен полный список имен листов, значения ячеек которых необходимо получить в нужном листе. К сожалению ни одна функция Excel не дает возможности получить этот список или обратиться к листам по номерам (хотя по моему мнению, это было бы весьма полезно).

А чтобы решать подобного рода задачи я давно пользуюсь таким макросом:

Код

Sub ListOfSheets()
' программа составления списка выделенных листов
    Dim c As Range
    Set c = Application.InputBox(prompt:="Укажи, куда записать имена выделенных листов:", Type:=8)
    For i = 1 To ActiveWorkbook.Sheets.Count
        c.Cells(1, 1).Offset(i - 1, o).Value = Sheets(i).Name
    Next
End Sub


Перед запуском этого макроса нужно выделить те листы книги, список которых нужно получить в столбец под указываемой в процесе отработки процедуры.

В результате получим список имен нужных листов книги... например в ячейках A1:A10. Далее в B1 пишем такую формулу:

=двссыл(адрес(1;2;;;А1))

и копируем ее в B1:B10 - получится список значений ячейки B1 из десяти листов, имена которых мы получили в столбце А.

Добавлено @ 21:36
А вот если использовать такую пользовательскую функцию, то доступ к листу по номеру будет очень удобен:

Код

Public Function OffsetSheet(r As Range, n As Long) As Range
'пользовательская функция вернет ссылку на область ячеек в листе, отстоящем на указанное число листов n от листа, где расположена область, указанная в параметре r
    Set OffsetSheet = Worksheets(r.Parent.Index + n).Range(r.Address)
End Function


Теперь с использованием этой функции решение Вашей задачи будет очень простым:
- в ячейку А1 пишем формулу =OffsetSheet($B$1;СТРОКА())
- копируем эту формулу в область A1:A10
- получили список значений ячеек B1 десяти следующих за текущим листов книги.

Genyaa, ОГРОМНОЕ СПАСИБО ЗА ПОСТ!!!

Вывел с помощью Вашего макроса имена всех листов в колонку, и, как Вы указали,  с помощью =INDIRECT(ADDRESS(1;2;;;A1)) получил то, что нужно!!!

ВЫ ГЕНИЙ!!!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)