Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.06.2013, 07:51   #1
S.A.Nex
 
Регистрация: 29.06.2013
Сообщений: 7
По умолчанию В первых 10 столбцах рабочего листа находятся......

Помогите доделать,а то я не могу понять что тут дальше писать.Если что свои варнианты буду присылать.Ивы не оставьте без внимания мою тему.


В первых 10 столбцах рабочего листа находятся сведения о сотрудниках фирмы. Причем в первых трех столбцах рабочего листа записаны: фамилия, имя и отчество. Необходимо написать программу, делающую выборку сотрудников: телефон начинается с трех цифр 962, а зарплата превышает среднее значение зарплаты всех сотрудников. Имена полей и их содержимое придумать самостоятельно. Полученную выборку вывести на второй рабочий лист.

Код:
Type Spisok
lastName As String
firstName As String
papaName As String
nomer As Integer
dohod As Double

End Type

Sub лаба7()
Dim sp() As Spisok, i, j, n As Integer ' описываем переменные
Sheets("Лист2").Select 'работаем на листе 2
Range("a2:j100").Clear 'создает список
Sheets("Лист1").Select 'работаем на листе 1
n = n + 1 'в цикле с передусловием считаем кол-во элементов скписка
Wend 'циклическое повторение
n = n - 1
ReDim sp(n) 'перераспределяет размер массива

For i = 1 To n 'через цикл состовляем список
 sp(i).lastName = Cells(i + 1, 1)
 sp(i).firstName = Cells(i + 1, 2)
 sp(i).papaName = Cells(i + 1, 3)
 sp(i).nomer = Cells(i + 1, 4)
 sp(i).dohod = Cells(i + 1, 5)
Next i


________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE]
(это кнопочка на панели форматирования с решёточкой #)
Не забывайте об этом!

Модератор.

Последний раз редактировалось Serge_Bliznykov; 30.06.2013 в 09:26. Причина: Некоректно ввел задание.
S.A.Nex вне форума Ответить с цитированием
Старый 30.06.2013, 13:59   #2
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Вывод на второй лист допишете сами
Код:
Type Spisok
    lastName As String
    firstName As String
    papaName As String
    nomer As String
    dohod As Double

End Type

Sub лаба7()
    Dim sp() As Spisok, i, j, n As Integer, paralast As Integer, Avg As Double    ' описываем переменные
    Worksheets("Лист2").Range("a2:j100").Clear
    With Worksheets("Лист1")
        n = .Cells(.Rows.Count, 1).End(xlUp).Row
        ReDim sp(0)    'перераспределяет размер массива
        paralast = -1
        Avg = Application.WorksheetFunction.Average(.Range("E2:E" & n))
        For i = 2 To n    'через цикл состовляем список
            If Cells(i, 4).Text Like "962*" And .Cells(i, 5) > Avg Then
                paralast = paralast + 1
                ReDim Preserve sp(paralast)
                sp(paralast).lastName = .Cells(i, 1)
                sp(paralast).firstName = .Cells(i, 2)
                sp(paralast).papaName = .Cells(i, 3)
                sp(paralast).nomer = .Cells(i, 4)
                sp(paralast).dohod = .Cells(i, 5)
            End If
        Next i
    End With
End Sub
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 30.06.2013, 15:20   #3
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,170
По умолчанию

А чего это
Код:
n As Integer, paralast As Integer
Точно известно, что фирма большой никогда не будет?
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 30.06.2013, 15:53   #4
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Цитата:
Worksheets("Лист2").Range("a2:j100" ).Clear
.
У лабах больше 100-200 записей не бывает,обычно это в задании написано.
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 05.07.2013, 04:35   #5
S.A.Nex
 
Регистрация: 29.06.2013
Сообщений: 7
По умолчанию Вот как я и обещал код новой моей програмы.

Код:
Type Spisok 'создаем список
    lastName As String 'строковый тип данных,размер строкидо 255
    firstName As String '
    papaName As String '
    nomer As String '
    dohod As Double 'действительные числа

End Type

Sub лаба7()
    Dim sp() As Spisok, i, j, n As Integer, Avg As Double     ' описываем переменные
   Sheets("Лист2").Select
        Range("a2:j10").Clear
    Sheets("Лист1").Select
    While (Cells(n + 1, 4) <> "")
     n = Cells(Rows.Count, 1).End(xlUp).Row 'формула
        ReDim sp(0)    'перераспределяет размер массива
           
    Wend

    For i = 1 To n
        sp(i).lastName = Cells(i + 1, 1)
        sp(i).firstName = Cells(i + 1, 2)
        sp(i).papaName = Cells(i + 1, 3)
        sp(i).nomer = Cells(i + 1, 4)
        sp(i).dohod = Cells(i + 1, 5)
    Next i
    
       
       
        Avg = Application.WorksheetFunction.Average(Range("E2:E" & n))
        For i = 2 To n    'через цикл состовляем список
            If Cells(i, 4).Text Like "962*" And Cells(i, 5) > Avg Then 'задаем условие
                
        Sheets("Лист2").Select
                
                sp(paralast).lastName = Cells(i, 1)
                sp(paralast).firstName = Cells(i, 2)
                sp(paralast).papaName = Cells(i, 3)
                sp(paralast).nomer = Cells(i, 4)
                sp(paralast).dohod = Cells(i, 5)
            End If
        Next i
End Sub
Он у меня тоже выдает ошибку.
S.A.Nex вне форума Ответить с цитированием
Старый 05.07.2013, 04:37   #6
S.A.Nex
 
Регистрация: 29.06.2013
Сообщений: 7
По умолчанию

Цитата:
Сообщение от Hugo121 Посмотреть сообщение
А чего это
Код:
n As Integer, paralast As Integer
Точно известно, что фирма большой никогда не будет?
У меня эта строчка тоже вызвала вопрос.
S.A.Nex вне форума Ответить с цитированием
Старый 05.07.2013, 14:15   #7
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,170
По умолчанию

Ну по последним сведениям от MSDN
http://msdn.microsoft.com/en-us/libr...ffice.10).aspx
смысла в integer больше нет, кроме как иногда ошибки создавать студентам
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 05.07.2013, 16:59   #8
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Цитата:
Сообщение от Hugo121 Посмотреть сообщение
смысла в integer больше нет, кроме как иногда ошибки создавать студентам
Это точно.Учить матчасть надо,тогда ошибок не будет
Мой код работает нормально Лаба7
Цитата:
У меня эта строчка тоже вызвала вопрос.
И вопрос не возникает
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вычислить и напечатать произведение первых 7 элементов и сумм следующих элементов, которые находятся на первых позициях. doker___ C++ Builder 0 19.06.2013 15:54
Вывод на юзерформу изображения (содержания) рабочего листа strannick Microsoft Office Excel 2 12.10.2012 09:29
Заполнение массива из ячеек рабочего листа ofenod Microsoft Office Excel 2 29.04.2011 01:33
С++ айти первых 10 натуральных чисел, нацело делятся на 19 и находятся в интервале, левая граница которог loloverg Помощь студентам 2 25.05.2010 19:42
Использование события рабочего листа Worksheet_Change kovalevskivf Microsoft Office Excel 2 15.11.2009 12:51