Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на Basic / VBA


Новое направление Портала RusFAQ.ru:
MosHoster.ru - Профессиональный хостинг

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Basic/VBA

Выпуск № 739
от 26.03.2008, 19:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 289, Экспертов: 44
В номере:Вопросов: 3, Ответов: 6

Нам важно Ваше мнение об этой рассылке.
Оценить этот выпуск рассылки >>


Вопрос № 128385: Помогите написать программу: Даны натуральное число n, действительная матрица размера nх9. Найти среднее арифметическое каждого из столбцов...
Вопрос № 128393: Уважаемый эксперт, Мegaloman! Я попробовала Вашу программку приспособить к своей базе - не вышло.. Что я не так сделала? Помогите, пожалуйста! ******** Sub Ìàêðîñ4() ' ' Ìà...
Вопрос № 128431: Уважаемые Эксперты! подскажите, пожалуйста, как убрать пустые строки в базе данных на EXEL (данные набиты не всегда через одну строку)? (не в ручную, а циклом) заранее благодарна!...

Вопрос № 128.385
Помогите написать программу:
Даны натуральное число n, действительная матрица размера nх9. Найти среднее арифметическое каждого из столбцов
Отправлен: 21.03.2008, 10:03
Вопрос задал: Дегтярь Игорь Геннадиевич (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Dmitriev D.O.
Здравствуйте, Дегтярь Игорь Геннадиевич!

Где-то так:

Dim n as Integer, i as Integer, j as Integer
Dim M(n,9) as integer, sr (10) as Single
for i=1 to 9
for j =1 to n
sr(i)=sr(i)+M(i,j)
next j
sr(i)=sr(i)/9
next i
Ответ отправил: Dmitriev D.O. (статус: 1-ый класс)
Ответ отправлен: 21.03.2008, 15:13

Отвечает: Черников Игорь Владимирович
Здравствуйте, Дегтярь Игорь Геннадиевич!

Вот Ваш код:

Dim Matrica() As Integer
n = InputBox("Введите число n") ' Ввод размерности, если не нужно убрать
ReDim Matrica(n, 9)
'* * * Здесь вы должны заполнить массив
For i = 0 To n
For j = 0 To 9
Summa = Summa + Matrica(i, j)' Складываем все числа столбца(если там будет не число, произойдёт ошибка)
Next j
' вычисляем среднее значение и записываем в переменную
'Число 10 обозначает количество строк, т.к. размерность массива начинается с 0, а не с 1
otvet = otvet & Chr(10) & "Среднее значение в столбце " & i & " равно " & CStr(Summa / (10))
Summa = 0
Next i
MsgBox (otvet) ' Выводим ответ на экран

Удачи!
---------
От каждого по способностям, каждому по труду
Ответ отправил: Черников Игорь Владимирович (статус: 8-ой класс)
Ответ отправлен: 23.03.2008, 18:38


Вопрос № 128.393
Уважаемый эксперт, Мegaloman!
Я попробовала Вашу программку приспособить к своей базе - не вышло..
Что я не так сделала?
Помогите, пожалуйста!
********
Sub Ìàêðîñ4()
'
' Ìàêðîñ3 Ìàêðîñ
' Ìàêðîñ çàïèñàí 20.03.2008 (Shubeiko M. L.)
'
Sheets("L1").Select
For i = 1 To 12
For j = 1 To 14
If Sheets("L2").Range("c2").Offset(j - 1, i - 1) <> "" Then
Sheets("L2").Range("c2").Offset(j - 1, i - 1) = Range("e2").Offset(j - 1, i - 1) - Range("c2").Offset(j - 1, 0)
End If
Next j
Next i
Sheets("L2").Select
End Sub

подскажите, пожалуйста, какой цикл обработает приблизительно такую базу данных в экселе
L1

C D E F G H I J K L M N

61,7 71,6 987,0 61,0 72,6 988,0 60,5 72,3 985,0 61,0 74,7 989,0

62,7 63,0 996,0 63,4 62,3 995,0 62,3 62,6 997,0 62,7 62,3 997,0

33,0 35,0 1008,0 30,0 35,1 1008,0 29,3 35,2 1008,0 30,2 34,9 1006,0

3,0 39,8 1016,0 2,8 39,2 1016,0 -2,2 36,5 1016,0 5,4 39,6 1017,0

-29,9 63,4 997,0 -29,5 62,3 999,0 -41,9 65,7 1000,0

-16,7 64,8 999,0 -16,4 65,4 999,0 -17,6 63,3 1001,0

2,5 75,2 1004,0 -4,1 72,5 1003,0
чтобы на L2 записалось:
C D E

H2-E2 K2-E2 N2-E2
H4-E4 K4-E4 N4-E4
H6-E6 K6-E6 N6-E6
H8-E8 K8-E8 N8-E8
H10-E10 K10-E10 N10-E10
H12-E12 K12-E12 N12-E12
H14-E14 K14-E14 N14-E14

как сделать так, чтобы пустые строки и ячейки не обрабатывались?
чтобы они так и оставались пустыми?
н-р: H14-E14 должна быть пустой и нечётные строки не надо обрабатывать - они пустые..
***************

Заранее Вам благодарна!
Маргарита.

Отправлен: 21.03.2008, 10:58
Вопрос задала: Шубейко Маргарита (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 4)

Отвечает: megaloman
Здравствуйте, Шубейко Маргарита!
Необычно как-то публично получать адресованный мне вопрос не по внутренней почте. Как я понял, это повторение вопроса № 128289. Он мне изначально не понравился, т к я не очень понимаю (а Вы не определили), что такое пустая строка.
Черников Игорь Владимирович ответил на вопрос, я решение не проверял, но думаю, он ошибиться не мог. Поэтому и думать над ответом не стал - его и мое решение Вопрос № 128130 по логике ничем не отличается, отличается способом адресации ячеек. Его способ, наверное, более эффективен, а тот способ, что использовал я, на мой взгляд, более нагляден. Проблема решена - я потерял к ней интерес.
Вы выдали свой вариант проверки строки и им я тоже воспользуюсь, раз Вы его считаете достаточным: считаю строку пустой, если клетка "e" в конкретной строке ="" (Правда, у Вас это "с")

Решение смотрите в приложении, вроде бы работает, проверял

Приложение:

---------
Нет времени на медленные танцы

Ответ отправил: megaloman (статус: Студент)
Ответ отправлен: 21.03.2008, 15:40
Оценка за ответ: 5
Комментарий оценки:
Огромное спасибо!!!


Вопрос № 128.431
Уважаемые Эксперты!
подскажите, пожалуйста, как убрать пустые строки в базе данных на EXEL (данные набиты не всегда через одну строку)?
(не в ручную, а циклом)
заранее благодарна!
Отправлен: 21.03.2008, 15:05
Вопрос задала: Шубейко Маргарита (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 8)

Отвечает: ualife
Здравствуйте, Шубейко Маргарита!
Код в приложении. Он не идеален, там есть парочка "ошибок" (работать все будет, но можно было проще), которые отлавливаются со знаниями Excel, VBA и English language.
Желаю удачи :-)

Приложение:

---------
Нет границ - есть лишь препятствия!

Ответ отправил: ualife (статус: 8-ой класс)
Ответ отправлен: 21.03.2008, 15:36
Оценка за ответ: 5
Комментарий оценки:
Большое СПАСИБО!!!

Отвечает: Тесленко Евгений Алексеевич
Здравствуйте, Шубейко Маргарита!
Вполне работоспособный код в приложении.
Евгений.

Приложение:

Ответ отправил: Тесленко Евгений Алексеевич (статус: Студент)
Ответ отправлен: 21.03.2008, 16:17
Оценка за ответ: 5
Комментарий оценки:
Большое СПАСИБО!

Отвечает: HookEst
Здравствуйте, Шубейко Маргарита!
Вот еще вариант, который удаляет строки с активного листа, без использования циклов:

Sub t()
On Error Resume Next
With ActiveSheet.Cells
.SpecialCells(xlCellTypeConstants).EntireRow.Hidden = True
.SpecialCells(xlCellTypeFormulas).EntireRow.Hidden = True
.SpecialCells(xlCellTypeVisible).EntireRow.Delete
.EntireRow.Hidden = False
End With
End Sub

здесь, сначала скрываются все строки, где есть константы, потом все строки где есть формулы, потом удаляются все видимые строки(т.е. как раз те. где нет ни константы ни формулы), и все отображается опять.

А если же в Вашей базе данных, есть обязательный столбец(т.е. такой, в котором обязательно есть значение на всех строках с данными, например ID или Фамилия или что там у ВАс), то например одна строка:

Columns(1).SpecialCells(xlCellTypeBlanks).EntireRow.Delete

удалит с листа все строки для которых нет значения в первом столбце.
Успехов.
Ответ отправил: HookEst (статус: Специалист)
Ответ отправлен: 24.03.2008, 11:42
Оценка за ответ: 5
Комментарий оценки:
БОЛЬШОЕ СПАСИБО! для меня особенно ценно, что это всё делается без цикла! удачи Вам!


Вы имеете возможность оценить этот выпуск рассылки.
Нам очень важно Ваше мнение!
Оценить этот выпуск рассылки >>

Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2008, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Техподдержка портала, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале
Версия системы: 4.72.6 beta от 22.03.2008
Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное