Прочее компьютерное
Помогите с Excel . Вопрос внутри
Есть лист на котором ФИО и зарплата людей. Нужно разбить этот список на два листа. На первом все граждани в которых зарплата ниже 10000 руб, а в остальном у которых выше. Только таким образом что бы список был целосным. То есть не было пустых строк.
Добавь ещё один лист (Меню: Вставка->Лист) .
Сделай копию своего листа на новый пустой лист. Для этого нажми самую левую верхнюю угловую пустую клетку (левее буквы "A" и выше цифры "1"). Все ячейки должны отметиться (окраситься, т. е. немного потемнеть) .
Нажми значок "Копировать" или в меню: Правка->Копировать (или нажать Ctrl-C). Должна появиться бегущая строка по периметру. После этого перейди на новый лист и нажми на значок "Вставить" (портфельчик) или Правка->Вставить (или нажать Ctrl-V).
Потом сделай сортировку по колонке с суммами зарплаты в обоих листах. (Меню Данные->Сортировка) (если сумма занимает более одной колонки, перед сортировкой надо их отметить, проведя мышью по верхней строчке с буквами) .
После этого в одном листе удали все строки с зарплатами до 10000р. , а в другом - выше 10000р.
Для этого нужно сначала отметить ненужные строки. Чтобы отметить, нужно провести мышью по самой левой колонке с цифрами (с нажатой левой клавишей) . Если строки уходят вниз за нижний край листа, то не отпускай мышь, строки сами поедут вверх, тут главное - не прозевать. Если немного проедешь ниже, чем надо, также не отпуская, подвинь мышь в верх.
Потренируйся, если с первого раза не полуится.
После того, как отметишь, можешь нажать Delete или в Меню: Правка->Удалить.
Если что-то сделаешь неправильно, можно отменить последние действия с помощью значка с загогулистой стрелки влево или в Меню: Правка->Отменить.
После всего этого можешь сделать сортировку по фамилиям.
Впочем, многое из этого ты, наверно, знаешь. Тогда тебе будет легче.
Вообще, перед тем, как будешь делать свою работу, можешь включить Запись макросов.
Меню: Сервис->Макросы->Запись макросов
Тогда в следующий раз сможешь воспользоваться макросом. Но, сначала почитай об этом в Справке твоего Excel-а.
Сделай копию своего листа на новый пустой лист. Для этого нажми самую левую верхнюю угловую пустую клетку (левее буквы "A" и выше цифры "1"). Все ячейки должны отметиться (окраситься, т. е. немного потемнеть) .
Нажми значок "Копировать" или в меню: Правка->Копировать (или нажать Ctrl-C). Должна появиться бегущая строка по периметру. После этого перейди на новый лист и нажми на значок "Вставить" (портфельчик) или Правка->Вставить (или нажать Ctrl-V).
Потом сделай сортировку по колонке с суммами зарплаты в обоих листах. (Меню Данные->Сортировка) (если сумма занимает более одной колонки, перед сортировкой надо их отметить, проведя мышью по верхней строчке с буквами) .
После этого в одном листе удали все строки с зарплатами до 10000р. , а в другом - выше 10000р.
Для этого нужно сначала отметить ненужные строки. Чтобы отметить, нужно провести мышью по самой левой колонке с цифрами (с нажатой левой клавишей) . Если строки уходят вниз за нижний край листа, то не отпускай мышь, строки сами поедут вверх, тут главное - не прозевать. Если немного проедешь ниже, чем надо, также не отпуская, подвинь мышь в верх.
Потренируйся, если с первого раза не полуится.
После того, как отметишь, можешь нажать Delete или в Меню: Правка->Удалить.
Если что-то сделаешь неправильно, можно отменить последние действия с помощью значка с загогулистой стрелки влево или в Меню: Правка->Отменить.
После всего этого можешь сделать сортировку по фамилиям.
Впочем, многое из этого ты, наверно, знаешь. Тогда тебе будет легче.
Вообще, перед тем, как будешь делать свою работу, можешь включить Запись макросов.
Меню: Сервис->Макросы->Запись макросов
Тогда в следующий раз сможешь воспользоваться макросом. Но, сначала почитай об этом в Справке твоего Excel-а.
Насколько я понял вы готовы решить задачу макросом.
Код поместить в Модуль1 проекта VBA
Sub Macros()
Set w1 = Worksheets("Лист1")
Set w2 = Worksheets("Лист2")
j = 2
Application.ScreenUpdating = False
For i = 2 To w1.Columns(1).End(xlDown).Row
If w1.Cells(i, 2) >= 10000 Then
w1.Rows(i).Copy (w2.Rows(j))
w1.Rows(i).Delete Shift:=xlUp
i = i - 1: j = j + 1
End If
Next i
Application.ScreenUpdating = True
End Sub
ФИО в столбце А, зарплата в столбце В начиная со второй строки, на листе "Лист1"
После запуска макроса На "Лист1" останутся строки с зарплатой до 10000, не сортированные и подряд. На "Лист2" перенесутся строки с зарплатой от 10000 (включительно) , не сортированные и подряд.
Код поместить в Модуль1 проекта VBA
Sub Macros()
Set w1 = Worksheets("Лист1")
Set w2 = Worksheets("Лист2")
j = 2
Application.ScreenUpdating = False
For i = 2 To w1.Columns(1).End(xlDown).Row
If w1.Cells(i, 2) >= 10000 Then
w1.Rows(i).Copy (w2.Rows(j))
w1.Rows(i).Delete Shift:=xlUp
i = i - 1: j = j + 1
End If
Next i
Application.ScreenUpdating = True
End Sub
ФИО в столбце А, зарплата в столбце В начиная со второй строки, на листе "Лист1"
После запуска макроса На "Лист1" останутся строки с зарплатой до 10000, не сортированные и подряд. На "Лист2" перенесутся строки с зарплатой от 10000 (включительно) , не сортированные и подряд.
Авдонин Александр
Следующий код чуть длиннее, но должен выполнить задание быстрее первого.
Sub Macros2()
Set w1 = Worksheets("Лист1")
Set w2 = Worksheets("Лист2")
i = 2: j = 2
Application.ScreenUpdating = False
While w1.Cells(i, 1) ""
If w1.Cells(i, 2) >= 10000 Then
w1.Rows(i).Copy (w2.Rows(j))
w1.Rows(i).Delete Shift:=xlUp
j = j + 1
Else
i = i + 1
End If
Wend
Application.ScreenUpdating = True
End Sub
Дело в том, что у первого макроса цикл For выполняется до первой пустой ячейки в первом столбце, которую определили до копирования и удаления строк. Т.е. если список был из 200 строк и 150 переехало да другой лист, цикл все равно будет считать до 200+150
Во втором макросе только до 200.
Sub Macros2()
Set w1 = Worksheets("Лист1")
Set w2 = Worksheets("Лист2")
i = 2: j = 2
Application.ScreenUpdating = False
While w1.Cells(i, 1) ""
If w1.Cells(i, 2) >= 10000 Then
w1.Rows(i).Copy (w2.Rows(j))
w1.Rows(i).Delete Shift:=xlUp
j = j + 1
Else
i = i + 1
End If
Wend
Application.ScreenUpdating = True
End Sub
Дело в том, что у первого макроса цикл For выполняется до первой пустой ячейки в первом столбце, которую определили до копирования и удаления строк. Т.е. если список был из 200 строк и 150 переехало да другой лист, цикл все равно будет считать до 200+150
Во втором макросе только до 200.
Похожие вопросы
- Помогите с USB. Вопрос внутри
- Помогите с ответом!!!вопрос внутри
- Помогите,чем сможете.(вопрос внутри):
- Помогите с Excel!!!
- помогите. вопрос внутри
- Я уже спрашивал, помогли, но проблема вернулась.вопрос внутри
- Очень прошу помочь ( вопрос внутри ) Надя.
- Помогите плииз! (вопрос внутри!!!)
- Вопрос по антивирусу. Помогите ( вопрос внутри)
- Народ помогите мне пожалуйста! Проблема и не могу понять что делать (вопрос внутри)
Представте в организации работает несколько тысяч людей, и вы предлагаете удалять строки вручную. Это очень не рациональный подход.
Я делал через "Если", и получилось раскидать людей по листам, но при этом не подходящие под критерий строки были пустые, что не удобно.
Так же нужно что бы список остался в такой последовательности как он и был. То есть произвести сортировку нельзя. За этим списком они будут получать зарплату и уже знают кто за кем стоит. Список не по алфавиту а по отделам.
(Я хорошо ориентируюсь в Экселе, так что можите писать менее подробно.)
Тогда попробуй с помощью фильтра. Отметь нужный столбец.
Меню->Данные->Фильтр->Автофильтр.
(В Excel-е 2007 вроде бы немного по-другому, однако, разберёшься).
В колонке появится значок для фильтра, в нём выбери условие ("Непустые"), они скорей всего, внизу.
Потом сделай копию отфильтрованного на другой лист или оставь так, отфильтрованное, и сохрани.
Чтобы это всё автоматизировать, включи сначала Сервис->Макрос-Начать Запись Макросов. Когда закончишь, то там же, в Сервис->Макрос нажми "Остановить запись".
Получившийся Макрос можно редактировать. Там же, в Сервис->Макрос->Макросы выбери имя результата и нажми "Изменить"
Текст этого Макроса будет как основа программы.
Т.е., зная VBA, дополнив полученный текст нужными командами, можно получить программу с нужными функциями.
А в интернете (например в Гугле) искал?
(вообще-то там много ерунды)
См., например:
http://otvety.google.ru/otvety/thread?tid=43e310722ca01a37