Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » Microsoft Excel FAQ (Часть 1)

Модерирует : gyra, Maz

Widok (01-04-2006 15:33): лимит страниц. переезжаем сюда.  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100

   

ymy



YourMyYour
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

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

 
  • Смена представления имен столбцов с буквенного на цифровое и обратно
  • Надстройки "Сумма прописью"
     
    Тема Excel VBA в разделе Прикладное программирование
     
     


    Вот такой вопрос у меня, помогите хто может: Как в Exсel-e ограничить число строк и колонок отображаемых на листе, точно можно, сам видел, но как?, в непонятках.

  • Всего записей: 1339 | Зарегистр. 22-04-2002 | Отправлено: 17:00 17-09-2002 | Исправлено: Maz, 22:44 24-02-2017
    Busyatka



    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    derailer
    открывать каждый раз программу с новой книгой...

    Всего записей: 64 | Зарегистр. 11-08-2004 | Отправлено: 17:38 23-12-2004
    bredonosec



    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

    Цитата:
    Как сделать так, чтобы обновлять исходную таблицу, но чтобы старые строки не удалялись(стерались), а новые добавлялись.  
    - А где им быть тогда? Или, если есть желание, копируй столббец и вставляй его в следующий столбец исходной. - третий, четвертый, т.д...  

    Всего записей: 16269 | Зарегистр. 13-02-2003 | Отправлено: 17:44 23-12-2004
    LINUXXX



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ли, если есть желание, копируй столббец и вставляй его в следующий столбец исходной. - третий, четвертый, т.д...  
     
    Вот в чём дело- надо чтобы автоматом сливались!

    Всего записей: 21 | Зарегистр. 21-12-2004 | Отправлено: 20:09 23-12-2004
    bredonosec



    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

    Цитата:
    надо чтобы автоматом сливались!
    - Подробней можно? Что, как, куда и почему. Недопонял задачу..  

    Всего записей: 16269 | Зарегистр. 13-02-2003 | Отправлено: 20:14 23-12-2004
    LINUXXX



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Во-первых, спасибо за ответ.
    Есть таблица, допустим 2 столбца и 7 строк.Пример
    |ФИО|Зарплата|
    |Иванов|700|
    |Петров|600|
    |Сидоров|500|
    |Шукшин|400|
    |Пупкин|300|
    |Безымяный|200|
    Приходит обновление, такое:
    |Иванов|1000|
    |Пупкин|700|
    |Новичок1|300|
    |Новичок2|1000|
    На самом деле в обновлении оч. много записей и просто копировать и вставлять...замучаешься!!!
    После обновления должно быть так:
    |ФИО|Зарплата|
    |Иванов|1000|
    |Петров|600|
    |Сидоров|500|
    |Шукшин|400|
    |Пупкин|700|
    |Безымяный|200|
    |Новичок1|300|
    |Новичок2|1000|
     
    Спасибо.

    Всего записей: 21 | Зарегистр. 21-12-2004 | Отправлено: 22:59 23-12-2004
    bredonosec



    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    LINUXXX

    Цитата:
    После обновления должно быть так:  
    - В принципе, можно это дело реализовать так:  
    1. Вставляешь начиная с первой свободной строки весь блок нового (то есть, просто копипэйстишь его под имеющееся)
    2. Выделяешь первый столбец (как понял, у тебя задача именно в сортировке по фамилии) и жмешь ему "сортировать по возрастанию" - фамилии выстраиваются, а вместе с ними и числа второго стоблца.
     
    Ой.. не заметил. У тебя старые заменяются, а новые добавляются..  
    Тогда думается что-то вроде макроса, который бы проверял наличие имени в таблице и в зависимости от этого делал добавку или замену..  
     Или добавить сначала каждому имени (в новопришедшем) в конце символ "_" или точку, или хоть еденицу, после этого пункты 1 и 2, после этого получим ряд, где повторяющиеся фамилии будут по парам раскиданы, сначала просто, потом с символом. А там уже поудалять лишние строки (например, повесив команду удалить строку на комбинацию клавиш - тогда одним кликом), или как-то автоматичнее, но пока не придумал как.
     
    Гляну в методичку, может, что в голову интересное стукнет..
    Если нет и требуется именно полный автомат, то по макросам спец robert.

    Всего записей: 16269 | Зарегистр. 13-02-2003 | Отправлено: 05:17 24-12-2004
    Geezer S



    Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    LINUXXX
    Полный автомат - это надо макрос. Есть предложение по полуавтомату. Твоя задача состоит из двух подзадач:
    1. Изменить з/п у старых работников
    2. Добавить новых.
     
       1. Допущения: основная таблица расположена на листе Лист1 файла Книга1.xls, изменения - на листе Лист2 файла Книга2.xls. В обоих таблицах в столбце А - ФИО, в столбце В - з/п. Оба файла открыты. В первом же свободном столбце основной таблицы в первую ячейку (после заголовка) вводим такую формулу:

    Код:
    =ЕСЛИ(ЕНД(ВПР(A2;[Книга2]Лист2!A:B;2;0));B2;ВПР(A2;[Книга2]Лист2!A:B;2;0))

    которая автоматически проставит новые зарплаты и оставит не изменившиеся для старых сотрудников. После этого копируем этот столбец и вставляем его как значения в столбец В. Первая часть готова.
       2. На листе с изменениями (Лист2 Книги2) в первом же свободном столбце  в первую ячейку (после заголовка) вводим такую формулу:

    Код:
    =ПОИСКПОЗ(A2;[Книга1]Лист1!A:A;0)

    Против фамилий новых сотрудников будет стоять #Н/Д. Ставим автофильтр по этому значению, копируем полученный диапазон и вставляем в основную таблицу, которую потом сортируем по ФИО.
     
    Вуаля!
     
    Немножно гиморно, но работает (проверял).
     

    Всего записей: 220 | Зарегистр. 08-12-2001 | Отправлено: 10:04 24-12-2004
    Tropin



    Full Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    LINUXXX
    Кто-то сказал слово макрос??? :)

    Код:
    Sub RefreshData()
      Set WS1 = Worksheets("Лист1") ' Лист с данными
      Set WS2 = Worksheets("Лист2") ' Лист с обновлениями
       
      For Each Line2 In WS2.UsedRange.Rows
        stroka = Line2.Cells(, 1).Value
        Set FR = WS1.Range(WS1.Cells(WS1.UsedRange.Rows.Row, 1), _
                           WS1.Cells(WS1.UsedRange.Rows.Row + _
                           WS1.UsedRange.Rows.Count - 1, 1))
                           
        Set c = FR.Find(stroka, LookIn:=xlValues, LookAt:=xlWhole)
         
        If c Is Nothing Then
          ' если сотрудника нет
          LastRow = WS1.UsedRange.Rows.Count + 1
          WS1.Rows(LastRow).Insert Shift:=xlDown
          WS1.Cells(LastRow, 1) = WS2.Cells(Line2.Row, 1)
          WS1.Cells(LastRow, 2) = WS2.Cells(Line2.Row, 2)
        Else
          WS1.Cells(c.Row, 2) = WS2.Cells(Line2.Row, 2)
        End If
      Next Line2
    End Sub
     

    Не совсем универсально, но вроде решает правильно :))) главное же идея :)))

    ----------
    Вот потому, что вы говорите то, что не думаете и думаете то, что не думаете, вот в клетках и сидите... (C) Кин-дза-дза

    Всего записей: 538 | Зарегистр. 25-11-2002 | Отправлено: 11:45 24-12-2004
    LINUXXX



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Всем спасибо!
    Tropin,
    тебе особое спасибо. Всё работает))СПАСИБО ещё раз!

    Всего записей: 21 | Зарегистр. 21-12-2004 | Отправлено: 16:10 24-12-2004
    mp3exchanger



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Tropin

    Цитата:
    Не совсем универсально, но вроде решает правильно

    Супер! Работает! Я думал, что это должен быть супернавороченный макрос, а ты его в несколько строк уместил. Tropin, ты так здорово знаешь макросы! Поделись, как долго изучал и по какой литературе? Я тоже так хочу

    Всего записей: 518 | Зарегистр. 24-02-2003 | Отправлено: 02:03 25-12-2004 | Исправлено: mp3exchanger, 02:10 25-12-2004
    LINUXXX



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Tropin,
    а у меня ещё один вопрос как поменять кол-во столбцов, допустим, их стало пять? что надо изменить. Может надо добавить новые переменные?

    Всего записей: 21 | Зарегистр. 21-12-2004 | Отправлено: 15:48 25-12-2004
    Robert



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    LINUXXX

    Цитата:
    как поменять кол-во столбцов, допустим, их стало пять? что надо изменить.

    Ничего менять не надо, макрос работает со строками целиком независимо от количества столбцов. Главное - чтобы фамилии были в первом столбце.

    Всего записей: 285 | Зарегистр. 12-03-2003 | Отправлено: 11:17 26-12-2004
    Tropin



    Full Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Robert, LINUXXX
    На самом деле не совсем так...
    1. Зависит от того какие столбцы добавлять...
    2. Если столбцы с обновляемой информацией (типа зарплата), то если посмотреть внимательнее, у меня есть строки
    WS1.Cells(LastRow, 2) = WS2.Cells(Line2.Row, 2) ' для нового
    WS1.Cells(c.Row, 2) = WS2.Cells(Line2.Row, 2) ' для обновления существующего
     
    таким образом если появится столбец "ПРЕМИЯ", то достаточно додавить к этим строкам еще и
    WS1.Cells(LastRow, 3) = WS2.Cells(Line2.Row, 3) ' для нового
    WS1.Cells(c.Row, 3) = WS2.Cells(Line2.Row, 3) ' для обновления существующего
    соответственно.
    Но если совсем красивл, то лучше копировать сразу диапазоном, тогда можно сколько угодно столбцов обновлять...
     
     
    mp3exchanger

    Цитата:
    Поделись, как долго изучал и по какой литературе?

    Если честно, то изучал сам по F1 ;)... ну конечно у нас на работе есть какая-то книжка, обычно я к ней обращаюсь, чтобы найти какую-либо специфическую для Экселя инфу, например синтаксис при проверки существования объекта If c Is Nothing Then или что-то подобное...
    А чтобы хорошо писать макросы достаточно просто знать основы алгоритмизации... ну и не плохо бы уметь писать программы на каком-нибудь (более серьезном ;) языке...
    Вот я, надеюсь, не плохо знаю Pascal, давным давно, конечно, интересовался и бэйсиком, а VBA - имхо тоже самое, только несколько размыто... + объектно ориентировано (что, конечно, есть "плюс" ;)...
    Ну а сами макросы в жизь бы не стал писать, но на работе этого и подавно никто не умеет, вот и приходится иногда сталкиваться, а на руборде можно и попрактиковаться, заиметь различные наработки, да и другим помочь ;)...


    ----------
    Вот потому, что вы говорите то, что не думаете и думаете то, что не думаете, вот в клетках и сидите... (C) Кин-дза-дза

    Всего записей: 538 | Зарегистр. 25-11-2002 | Отправлено: 13:36 26-12-2004
    LALALA3000

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    У меня проблема ;(
    есть файл размером 43 мб. - открыватеся нормально
    файл размером 47 мб. - вылетает в месагу "не достаточно памяти"
     
    п4 2.8HT
    512 DDR dual channel
    80 7.200 8mb
    WinXP sp1
    файл подкачки по выбору системы
     
    есть ли возможность исправить ситуацию? а то больно информация важная.
    Из-за чего это может быть?  
    в ДЗ выделение памяти экселю 143мб, каждый раз при вылете, может он (эксель) не может адресовать больше памяти для каждого отдельного файла?

    Всего записей: 8 | Зарегистр. 24-12-2004 | Отправлено: 16:49 27-12-2004
    LINUXXX



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Немного изменил:
    --------------------------------------------------------------------------------------------
    Sub RefreshData()
      Set WS1 = Worksheets("Лист1") ' Лист с данными
      Set WS2 = Worksheets("Лист2") ' Лист с обновлениями
       
      For Each Line2 In WS2.UsedRange.Rows
        stroka = Line2.Cells(, 1).Value
        Set FR = WS1.Range(WS1.Cells(WS1.UsedRange.Rows.Row, 1), _
                           WS1.Cells(WS1.UsedRange.Rows.Row + _
                           WS1.UsedRange.Rows.Count - 1, 1))
                             
        Set c = FR.Find(stroka, LookIn:=xlValues, LookAt:=xlWhole)
         
        If c Is Nothing Then
          LastRow = WS1.UsedRange.Rows.Count + 1
          WS1.Rows(LastRow).Insert Shift:=xlDown
          For i = 2 To 9
          WS1.Cells(LastRow, i) = WS2.Cells(Line2.Row, i)
          Next i
        Else
         For i = 2 To 9
          WS1.Cells(c.Row, i) = WS2.Cells(Line2.Row, i)
          Next i
        End If
      Next Line2
       
    MsgBox "Данные обновлены"
    End Sub
    -------------------------------------------------------------------------------------------------
     
    А как сделать по обновление по столбцам?

    Всего записей: 21 | Зарегистр. 21-12-2004 | Отправлено: 23:22 27-12-2004
    Tropin



    Full Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    LALALA3000
    Экселевский файл в 47 Мб - это изврат!
    Если информация действительно важная, то и хранить её нужно в более менее надежном месте...
     
    LINUXXX

    Цитата:
    А как сделать по обновление по столбцам?

    Не понял какое именно обновление и по каким столбцам?
    Пример был бы желателен ;)

    ----------
    Вот потому, что вы говорите то, что не думаете и думаете то, что не думаете, вот в клетках и сидите... (C) Кин-дза-дза

    Всего записей: 538 | Зарегистр. 25-11-2002 | Отправлено: 23:34 27-12-2004
    LINUXXX



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Tropin,
    ну я подумал, надо уж закончить этот прожект до полного.
    Допустим,  
    |ФИО|Зарплата|Премия|Кол-во раб.недель|
    |Иванов|700|100|5|
    |Петров|600|10|5|
    |Сидоров|500|990|7|
    |Шукшин|400|100|3|
    |Пупкин|300|10000|99|
    |Безымяный|200|1090|50|
    Приходит обновление, такое:  
    |ФИО|Зарплата|Кол-во раб.недель|
    |Петров|1500|15|
    |Сидоров|0|0|
    |Новичок1|700|8|
    |Новичок2|600|9|
    После обновления должно быть так:  
    |ФИО|Зарплата|Премия|Кол-во раб.недель|
    |Иванов|700|100|5|
    |Петров|1500|10|5|
    |Сидоров|0|990|0|
    |Шукшин|400|100|3|
    |Пупкин|300|10000|99|
    |Безымяный|200|1090|50|
    |Новичок1|700| |8|
    |Новичок2|600| |9|
     
    Т.е. как бы если нет ПРЕМИЯ, но есть Кол-во РАБ. НЕДЕЛЬ, то обновление без удаления(т.е. аналагично, но по столбцам)
     

    Всего записей: 21 | Зарегистр. 21-12-2004 | Отправлено: 23:52 27-12-2004
    LALALA3000

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Tropin
    это не изврат, а проза жизни ;(
    пока надо работать вручную - 10 бюджетов по 22 филиалам на год, куда тут деться?
    так есть решение этой проблеммы или нет?

    Всего записей: 8 | Зарегистр. 24-12-2004 | Отправлено: 11:17 28-12-2004
    xcm

    Графоман
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    LALALA3000
     
    Эксел то какой ? Если 2000 то он по моим наблюдениям не очень хорошо работает с большими файлами и особенно автофильтрами в них ... 2003 в этом отношении лучче и СП к нему.

    ----------
    на свете счастья нет, но есть попкорн и сникерс.

    Всего записей: 652 | Зарегистр. 01-11-2002 | Отправлено: 11:51 28-12-2004
    bredonosec



    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    LALALA3000

    Цитата:
    это не изврат, а проза жизни ;(  
    пока надо работать вручную - 10 бюджетов по 22 филиалам на год, куда тут деться?  
    - А почему бы не использовать связанные файлы? В смысле, бюджет филиала в одном файле, другого - в другом, а общий в ячейках имеет связи с теми доками. (напр, сразу настроить тот или иной ряд/строку/... (по крайней мере, у нас так базы по клиентам связаны были меж собой и с бланками (договоров/счетов/...))

    Всего записей: 16269 | Зарегистр. 13-02-2003 | Отправлено: 14:09 28-12-2004
       

    Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100

    Компьютерный форум Ru.Board » Компьютеры » Программы » Microsoft Excel FAQ (Часть 1)
    Widok (01-04-2006 15:33): лимит страниц. переезжаем сюда.


    Реклама на форуме Ru.Board.

    Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
    Modified by Ru.B0ard
    © Ru.B0ard 2000-2024

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru