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

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

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

Maz (27-03-2018 08:04): Microsoft Excel FAQ (часть 6)  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199

   

Widok



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

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

 
  • Смена представления имен столбцов с буквенного на цифровое и обратно


    Сумма прописью
  • Надстройка "PROP" (сумма прописью)
  • надстройка Excellerator (c) Michael Zemlanukha & Maxim Shemanarev
  • макрос Num2String


  • Список соответствия имен функций в английской и русской версиях Excel или здесь
  • Описание Microsoft Excel File Format (eng.)
  • Горячие клавиши в Excel (табличка)
  • краткая, но емкая инструкция для чайников по добавлению готовых макросов (на примере макросов по увеличению размера шрифта на X пунктов от мемебера ferias
     
    Предыдущие ветки топика: Часть 1 | Часть 2 | Часть 3 | Часть 4
     
    Все вопросы по программированию (макросы, скрипты, пользовательские функции и т.п.) обсуждаются в теме Excel VBA в разделе Прикладное программирование.
     
    При необходимости выложить скриншот, пользуйтесь сервисом ImageShack® (ограничение на размер файла <1.5 Mb)
     
    Книга Джон Уокенбах "Подробное руководство по созданию формул в Microsoft Office Excel 2002" PDF 34МБ Файлы к книге

  • Всего записей: 24190 | Зарегистр. 07-04-2002 | Отправлено: 13:13 09-03-2010 | Исправлено: uzeerpc, 12:47 20-12-2017
    asbo

    BANNED
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Ненавижу программирование... Обвязка занимает в тысячи раз больше времени и места в коде.
     
    oshizelly, вот окультуренная версия:

    Код:
     
    Sub sb_PasteValues()
    On Error GoTo Er
        Selection.PasteSpecial _
            Paste:=xlPasteValues, _
            Operation:=xlNone, _
            SkipBlanks:=False, _
            Transpose:=False
    Exit Sub
    Er:
    Dim lErrNo&, sErrDsc$
    Dim sMsgTxt, lMsgRsp&, lMsgBut&
        lErrNo = Err.Number
        sErrDsc = Err.Description
        sMsgTxt = lErrNo & " - " & sErrDsc & vbLf & vbLf
        Select Case lErrNo
            Case 1004
                lMsgBut = vbInformation
                sMsgTxt = sMsgTxt & _
                          "Please check the following:" & vbLf & _
                          "- clipboard is not empty or " & vbLf & _
                          "- copy and paste areas are identical or" & vbLf & _
                          "- any some else" & _
                          vbLf
            Case Else
                lMsgBut = vbExclamation
                sMsgTxt = sMsgTxt & "Unknown error. Send a letter to BG." & vbLf
        End Select
        lMsgBut = lMsgBut + vbOKOnly
        lMsgRsp = MsgBox(sMsgTxt, lMsgBut)
    End Sub
     

     
    Добавлено:
    oshizelly

    Цитата:
    Так это сначала надо ячейку в буфер вручную скопировать? Сейчас проверил, в этом случае нормально работает.  

    Ну ты даешь! Оправдываешь ник :) Конечно же, надо вначале где-то что-то скопировать, а потом вставить куда-то тем или иным способом, предварительно переместившись (изменив Selection). Обычно, это разные места.
     

    Цитата:
    Вот только я не понял, почему первой строкой нельзя поставить операцию копирования, а надо это непременно делать вручную перед запуском макроса?  

    Тогда и вставится туда, откуда скопировалось. Никто ведь за тебя не переместится в целевой диапазон. А это сугубо частный случай...
     
    Поправил предыдущий ответ.

    Всего записей: 1805 | Зарегистр. 03-10-2006 | Отправлено: 19:54 27-07-2011 | Исправлено: asbo, 20:06 27-07-2011
    oshizelly



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

    Цитата:

    Цитата:
    Вот только я не понял, почему первой строкой нельзя поставить операцию копирования, а надо это непременно делать вручную перед запуском макроса?  

    Тогда и вставится туда, откуда скопировалось. Никто ведь за тебя не переместится в целевой диапазон. А это сугубо частный случай...  Обычно, это разные места.  

     
    Это - та самая "строка", которая копирует содержимое текущей ячейки в буфер обмена? Вот уж никогда бы не подумал, что она такая длинная.
    В общем, функционирует как раньше, когда код был в тысячу раз короче: срабатывает только в случае, если перед запуском руками скопировать ячейку в буфер обмена. В ином случае выдает ошибку.  
    Может. там в начале не хватает чего?

     
    Ну вот, наконец я понял, о чем вообще говорим. Лучше поздно, чем никогда. Я-то думал, что это как раз макрос для "частного случая", когда формулы надо заменить на абсолютные значения "не сходя с места", то есть, в тех же самых ячейках, в которых были формулы. Ведь наше обсуждение именно с этого моего вопроса началось: как сделать, чтобы при сортировке по другим стобцам не сбивались порядковые номера записей.
    Короче, буду копировать в буфер руками, нет проблем. Спасибо!

    Всего записей: 6524 | Зарегистр. 18-09-2004 | Отправлено: 20:10 27-07-2011 | Исправлено: oshizelly, 20:19 27-07-2011
    asbo

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

    Цитата:
    это как раз макрос для "частного случая", когда формулы надо заменить на абсолютные значения "не сходя с места", то есть, в тех же самых ячейках, в которых были формулы

    Ну, хоть и не для частного, более общего, но примерно так и есть :) Ведь руками мы что делаем? Выделяем, потом копируем. Если нада - перемещаемся, если нет, - то выделение таким и остается. Затем ищем спецвставку, настраиваем ее и вставляем. Ну, а в моем случае надо нажать только кнопочку.
     
    Впрочем ее легко заточить и сугубо под твою задачу - она будет копировать и сразу же вставлять. Надо Selection.PasteSpecial _ заменить на:
     
    With Selection
    .Copy
    .PasteSpecial _  
    (по тексту)
    End With

    Цитата:
    обсуждение ... началось с : как сделать, чтобы при сортировке по другим стобцам не сбивались порядковые номера записей. ... Спасибо!  

    Я и не заметил, как брюки превратились в элегантные шорты :) Не за что :)

    Всего записей: 1805 | Зарегистр. 03-10-2006 | Отправлено: 20:35 27-07-2011
    oshizelly



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

    Цитата:
    Ненавижу программирование... Обвязка занимает в тысячи раз больше времени и места в коде... вот окультуренная версия:  
     
    Попытался сравнить (в познавательных целях) "окультуренный" код макроса с его предыдущей версией от того же автора - но так и не понял, в чем различие, помимо размера. Функционал вроде бы в обоих случаях одинаковый Или это просто иллюстрация хорошо известного правила, что даже для просто решаемой задачи можно при достаточном упорстве и изобретательности отыскать более сложное решение?

    Всего записей: 6524 | Зарегистр. 18-09-2004 | Отправлено: 10:39 28-07-2011 | Исправлено: oshizelly, 12:06 28-07-2011
    asbo

    BANNED
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    oshizelly
    Во втором варианте добавлен обработчик ошибок, который позволяет системные сообщения (кому-то малопонятные) преобразовать в читабельный текст, дать какие-то внятные инструкции пользователю. И, главное, позволяет организовать различное поведение программы в ответ на разные ошибки, а в некоторых случаях позволяет и исправить ошибку.
     

    Цитата:
    ... даже для просто решаемой задачи можно при достаточном упорстве и изобретательстве отыскать более сложное решение?

    Снкс. Я оценил иронию и сарказм.
     
    В данном случае этот обработчик реализует лишь так называемую защиту от дурака (foolproof), который пытается что-то куда-то вставить, не озаботившись предварительным копированием этого "что-то" в буфер обмена. Этот механизм фулпруф мягко намекает юзеру, что программа из одной строки работает как надо, разработчик знает об этой ошибке, и эта ошибка - не в коде программы, и а в генетическом коде юзера :)  
     
    Вот из-за этого всего и пришлось дополнить единственную строку обвязкой из десятка других и пяти переменных вместо отсутствия оных в простом варианте.
     
    Ну а документирование всего этого добра заняло уйму времени и развернулось в обсуждение на двух страницах :) Вот поэтому я и ненавижу программирование.
     
    Но,  вся эта лирика для смежной темы. Сорри за оффтоп.

    Всего записей: 1805 | Зарегистр. 03-10-2006 | Отправлено: 11:16 28-07-2011
    oshizelly



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Имеется таблица из ячеек, допустим, A1, B1, C1, A2, B2, C2, причем B1, C1 и B2 обведены границами (рамкой).  
    Понятно, что правая граница ячейки B1 - это одновременно и левая граница ячейки C1, а нижняя граница ячейки B1 - это и верхняя граница ячейки B2. Поэтому если мы переместим или уберем рамку ячейки B1, то это уничтожит ее общие границы со смежными ячейками C1 и B2.  
    Своя логика тут есть, но очень уж неудобно каждый восстанавливать вручную границы ячеек B2 и C1 (на самом деле этих ячеек в моей таблице гораздо больше, чем в этом примере).
    Эта проблема никак не решается?

    Всего записей: 6524 | Зарегистр. 18-09-2004 | Отправлено: 13:49 30-07-2011 | Исправлено: oshizelly, 13:56 30-07-2011
    asbo

    BANNED
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Да, бывает очень неудобно и приходится мириться с этой логикой общей смежной границы. Можно, конечно, помудрить с промежуточными строками (столбцами). Но насколько это оправдано?...

    Всего записей: 1805 | Зарегистр. 03-10-2006 | Отправлено: 14:43 30-07-2011
    oshizelly



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Можно ли как-то отсортировать таблицу с учетом диапазонов значений? Например, есть список гаек, столбцы диаметр, цена и пр. данные.  Надо отсортировать список по столбцу "Цена", но с разбивкой по нескольким секциям, поскольку гайки в рамках диапазона 10-15 mm и 16-20 mm взаимозаменяемы.  
     
    При простой сортировке всей таблицы по столбцу "Цена" результат будет выглядеть так:
     
    Название гайки   Диаметр   Цена
    Латунная            20 mm     100 руб
    Золотая              10 mm     150 руб
    Чугунная            16 mm     200 руб
    Ртутная               12 mm     300 руб
    Деревянная          9 mm     350 руб
    Картонная            14 mm    700 руб

     
    А надо, чтобы было так:
     
    Название гайки   Диаметр   Цена
    Деревянная          9 mm     350 руб
    Золотая              10 mm     150 руб
    Ртутная               12 mm     300 руб
    Картонная            14 mm    700 руб
    Латунная            20 mm     100 руб
    Чугунная            16 mm     200 руб

     
    Спасибо!
    (Понимаю, что снова примитивный вопрос, даже уже неудобно, но опять-таки не вычитал в справке ничего умного.)

    Всего записей: 6524 | Зарегистр. 18-09-2004 | Отправлено: 17:17 31-07-2011 | Исправлено: oshizelly, 17:27 31-07-2011
    asbo

    BANNED
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    oshizelly, создать третий столбец - группа.

    Всего записей: 1805 | Зарегистр. 03-10-2006 | Отправлено: 18:33 31-07-2011
    oshizelly



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

    Цитата:
    oshizelly, создать третий столбец - группа.

    Спасибо, но вообще-то до чего-то в таком роде я и сам уже почти додумался. Однако такое решение требует дополнительных усилий от пользователя.  
    Скажем, надо будет отсортировать всю таблицу по 2-му столбцу (диаметр) и затем во всех строках со значением диаметра гайки от 10 до 15 mm прописать туда номер группы. Потом повторить то же самое для остальных диапазонов диаметра.
    Либо можно вообще ничего не прописывать, а просто произвести для каждой группы отдельно сортировку выделенных строк по 3-му столбцу (цене).  
     
    Я-то наивно считал, что MS Excel сам может все это сделать автоматически.

    Всего записей: 6524 | Зарегистр. 18-09-2004 | Отправлено: 21:16 31-07-2011
    asbo

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

    Цитата:
    такое решение требует дополнительных усилий от пользователя...
    ...Я-то наивно считал, что MS Excel сам может все это сделать автоматически.

    Как Ексель узнАет, что 10...15 - это одна группа, кроме как от юзера? Логически-то они в его голове уже сгруппированы, а чтобы эту логику перенести на лист, надо каждый раз шевелиться. А чтобы не делать это постоянно - надо пошевелиться один раз в сторону формального оформления этой логики.

    Всего записей: 1805 | Зарегистр. 03-10-2006 | Отправлено: 21:37 31-07-2011
    melnikover

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

    Всего записей: 15 | Зарегистр. 14-11-2009 | Отправлено: 10:12 04-08-2011
    jvg



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    melnikover, применить к таблице стандартную функцию "фильтр". Для этого выделяем диапазон ячеек (в вашем случае заголовок таблицы) и нажимаем на кнопочку с изображением воронки. В зависимости от версии офиса данная кнопочка может находиться в разных местах основного меню.


    ----------
    C2D|IntelDP965LT|DDRII 4x1024|Ge7900GS|5xHDD=3,3Tb|XPsp3:OsX86-10.5.7:Win7

    Всего записей: 571 | Зарегистр. 01-09-2002 | Отправлено: 10:25 04-08-2011
    SFC



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Есть две одинаковых текстовых ячейки. Обе были вставлены из аналогичных CSV файлов в разное время.
    С одинаковым форматом и наглядно выглядят одинаково.
    НО сравнение показывает что значения не равны.
    При копировании значения из одной ячейки в другую, сравнение показывает, что ячейки становятся равны.
    Чудеса. Может кодировки для ячеек разные или что не понятно
    Смотри Картинку:
       
    Сам файл: http://rghost.net/16835261 ( 2 kB )
     
    Добавлено:
    Все разобрался. Дело в пробелев конце текста одной из ячеек.
    Конец недели - пора отдыхать

    ----------
    [ offline ]

    Всего записей: 1663 | Зарегистр. 21-01-2003 | Отправлено: 16:25 04-08-2011
    superser



    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Товариши тяжеловесы, помогите создать гистограмму как на картинке.
     
    По идее я думаю нужно вместо значений использовать интервалы, но как такую хрень организовать, ума не приложу.
     
    Табличка нужна для вставки в поверпоинт. По идее можно таблицу в какой то другой программе делать, но в идеале бы было в Excel.  
     
    Функционала Excel+Paint уже недостаточно, да и сил уже нет создавать кубики и двигать в требуемые места, т.к. значения меняются ((
     

    Всего записей: 118 | Зарегистр. 03-07-2006 | Отправлено: 10:50 07-08-2011
    asbo

    BANNED
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    superser
    Выложи, для начала, файл с исходными данными. Я вот диаграмм сам боюсь, а кому-то просто влом твои цифры с экрана вбивать.
     
    Если смогу найти - дам ссылку на инструкцию, как из нескольких простых диаграмм скомбинировать одну сложную. Внешне, так все просто: зеленая - простая гистограмма, красная-синяя - с накоплением.  
     
    * вместо значений использовать интервалы
    - М.б. диапазоны? Не вбивать абсолютные значения, а указывать ссылки на диапазоны? Конечно. Так и делается.

    Всего записей: 1805 | Зарегистр. 03-10-2006 | Отправлено: 12:02 07-08-2011
    asbo

    BANNED
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Короче, ссылку найти не смог :(( Знаю, что была... Куча шикарных примеров. Увы.
     
    Не получилось у меня совместить гистограмму с накоплением с обыкновенной. Выкрутился вот так:
     

     
    Метода такова:
    - выделяешь диапазон данных
    - Вставка - Диаграмма - Гистограмма с накоплением
    - ПКМ на синем ряду (Кредит): Тип диаграммы - График

    Всего записей: 1805 | Зарегистр. 03-10-2006 | Отправлено: 16:23 07-08-2011
    KF121



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    вот вам как пример http://rghost.net/17164611, а дальше экспериментируйте с типом диаграммы. кстати excel диаграммы встраиваются в поверпоинт нормально, и потом ничего перестраивать и переносить заного не надо. двойным кликом входите в редим редактирования диаграммы и меняете там данные.

    Всего записей: 170 | Зарегистр. 24-05-2006 | Отправлено: 23:11 07-08-2011
    asbo

    BANNED
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    KF121
    Т.е. тоже не получилось совместить гистограмму с накоплением с обыкновенной?

    Всего записей: 1805 | Зарегистр. 03-10-2006 | Отправлено: 13:35 08-08-2011
    KF121



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    asbo
    я не пробовал, просто с проекта вытащил из презенташки диаграмму.

    Всего записей: 170 | Зарегистр. 24-05-2006 | Отправлено: 13:39 08-08-2011
       

    Страницы: 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 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199

    Компьютерный форум Ru.Board » Компьютеры » Программы » Microsoft Excel FAQ (часть 5)
    Maz (27-03-2018 08:04): Microsoft Excel FAQ (часть 6)


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru