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

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

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

Widok (09-03-2010 13:14): Лимит страниц. Продолжаем здесь.  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

Widok



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

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

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


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


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

  • Всего записей: 24190 | Зарегистр. 07-04-2002 | Отправлено: 13:12 29-08-2008 | Исправлено: Maz, 22:45 24-02-2017
    Pravoved90

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Спасибо за ответы..Пока разбежались глаза...Как что получится - обезательно отпишусь.  

    Всего записей: 511 | Зарегистр. 08-02-2008 | Отправлено: 21:35 13-09-2008
    q1wed



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    А в таком варианте и формулы скопируются
    Sub Макрос1()
    Range("E60:G60").Copy
    Range("H60:J60").PasteSpecial
    End Sub

     
    кстати вместо Range("E60:G60").Copy можно использовать Selection.Copy - зацикливания не будет, тогда макрос будет выглядеть так:
    Sub Макрос1()
    Selection.Copy
    Range("H60").PasteSpecial
    End Sub

     
    Справка F1 рулит!
     
     
    Добавлено:
    CEMEH, не надо мулек!

    Всего записей: 208 | Зарегистр. 02-03-2007 | Отправлено: 21:36 13-09-2008 | Исправлено: q1wed, 21:39 13-09-2008
    haruspik

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

    Всего записей: 4 | Зарегистр. 13-09-2008 | Отправлено: 22:41 13-09-2008
    q1wed



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    haruspik
    Консолидация (объединение) данных из нескольких таблиц в одну

    Всего записей: 208 | Зарегистр. 02-03-2007 | Отправлено: 23:20 13-09-2008
    Pravoved90

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

    Цитата:
    зацикливания не будет

    Сделал бытсрую пробу Зацикливания действительно нет, вот только "небольшая" проблема: после написания слова в ячейку и, как следствие, исполенния макроса, после нажатия на любую ячейку в листе он опять исполняется....
    Записал так- Макрос:
     
    Range("E60:G60").Copy
    Range("H60:J60").PasteSpecial
         
        End Sub
     
    Условие - так:
     
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Range("D1").Value = "земля" Then
      имя_макроса.
    End If
    End Sub
     
    Пошел дальше копаться...

    Всего записей: 511 | Зарегистр. 08-02-2008 | Отправлено: 23:21 13-09-2008 | Исправлено: Pravoved90, 23:22 13-09-2008
    q1wed



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    :D логично! у тебя ведь и вправду в D1
    Цитата:
    "земля"
    написано - так чтож условию не выполняться то......
     
     
    Добавлено:

    Цитата:
    Range("H60:J60").PasteSpecial  

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

    Цитата:
    Range("H60").PasteSpecial  


    Всего записей: 208 | Зарегистр. 02-03-2007 | Отправлено: 23:44 13-09-2008
    Pravoved90

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    УУУУУУРРРРРРРРРРРРРРАААААААААААААААА!!!!!!!!!!!!!! РАБОТАЕТ - это я.
    Конкретно писать, что было не так по пунктам не буду, - напишу сразу готовый вариант. Чтоб работало - писать надо ВСЕ:
     
    Private Sub Worksheet_Change(ByVal Target As Range)
    Application.EnableEvents = False
    If Range("M7").Value = "слово" Then
      имя_макроса1
      End If
     Application.EnableEvents = True
    End Sub
     
    От варианта написания самого макроса результат, в итоге, не зависит.
    Вот так. Забавно, что 2 дня назад я незнал, что такое макрос. - это опять я

    Всего записей: 511 | Зарегистр. 08-02-2008 | Отправлено: 03:39 14-09-2008 | Исправлено: Pravoved90, 04:34 14-09-2008
    SERGE_BLIZNUK

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Pravoved90
    у меня абсолютно нет времени, но и промолчать не могу.
    параметров в функцию Worksheet_Change передаётся Target  - это адрес ячейки, которая изменилась.
    Принято, чтобы ЗНАЧИТЕЛЬНО повысить быстродействие - в начале макроса проверять, попадает ли изменившиеся ячейка в контролируемый диапазон. т.е. если пользовтель изменить ячейку Z1000 Ваш макрос всё равно проверит М7 и если там "слово" то выполнит копирование данных. Оно Вам надо?
    проверить попадание в диапазон можно так:

    Код:
     
    Private Sub Worksheet_Change(ByVal Target As Range)
      ' If Target.Cells.Count > 1 Then Exit Sub ' это по необходимости - проверка, что изменилась только ОДНА ячейка, если больше - ничего не делаем.  
      If Not Intersect(Target, Range("M7")) Is Nothing  Then 'Изменилось M7
         ... <полностью Ваш код>
      End if  
     

    Всего записей: 2014 | Зарегистр. 12-09-2002 | Отправлено: 09:44 14-09-2008
    haruspik

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

    Цитата:
    Консолидация (объединение) данных из нескольких таблиц в одну

    Пробовал не подходит, бывает что надо внести изменения, и снова расфасовать обратно. Есть еще какие-то варианты?

    Всего записей: 4 | Зарегистр. 13-09-2008 | Отправлено: 13:05 14-09-2008 | Исправлено: haruspik, 13:10 14-09-2008
    cluster

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    А помогите решить задачу.
    Есть три ячейки. Последняя - есть результат деления второй на первую. Только первая иногда может иметь значение =0 и тогда получается не оч хорошо. В таком случае результат в третьей ячейке должен быть равен значению во второй.
    Думал использовать функцию ЕСЛИ, но в ней нельзя применять выражения. Посоветуйте что-нибудь.

    Всего записей: 1720 | Зарегистр. 21-11-2003 | Отправлено: 14:00 14-09-2008
    Pravoved90

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    SERGE_BLIZNUK
    Да, действительно, я сразу и не заметил такой фокус. Крайне признателен за помощь.  
    ИТАК, после изнурительной борьбы интеллекта против американской машины коллективный разум одержал безоговорочную победуУРА.
    Итого для достижения поставленной цели пишем следующее колдовство:
     
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Cells.Count > 1 Then
    Exit Sub
    End If
    If Not Intersect(Target, Range("M7")) Is Nothing Then
    Application.EnableEvents = False
    If Range("M7").Value = "слово" Then
      имя_макроса1
      End If
     Application.EnableEvents = True
    End If
    End Sub
     
    Вот так. Можно и в шапочку это действо поместить. Благодарю ВСЕХ за содействие и помощь в этом нелегком деле
     
    Добавлено:
    cluster
    Как раз недавно делал нечто подобное
    =ЕСЛИ(E18)=0;A1;((E18-K18)*(100/МАКС(E18;K18))))
    , где Е18 - ваше первое значение
    A1 - ваше второе значение, которое исполняется в случае если, "первое значение =0"
    ((E18-K18)*(100/МАКС(E18;K18)))) - ваша основная формула, которая будет исполняться во всех остальных случаях.  
    Удачи

    Всего записей: 511 | Зарегистр. 08-02-2008 | Отправлено: 14:03 14-09-2008 | Исправлено: Pravoved90, 14:17 14-09-2008
    Mushroomer



    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    cluster
    =ЕСЛИ(A1=0;B1;B1/A1)

    Всего записей: 22840 | Зарегистр. 19-01-2002 | Отправлено: 14:18 14-09-2008 | Исправлено: Mushroomer, 14:24 14-09-2008
    Pravoved90

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Еще одна "новинка". Когда под первым условием пишу идентичное, только с другими ячейками и названиями, выпадает ошибка с ссылокой на новое условие:
    ambiguous name detected work_sheet change
    Что это значит и как с этим бороться?
     
    Вроде - это значит, что строчки Private Sub Worksheet_Change(ByVal Target As Range) не должны повторяться...Но не могу правильно изменить имя...

    Всего записей: 511 | Зарегистр. 08-02-2008 | Отправлено: 14:40 14-09-2008 | Исправлено: Pravoved90, 15:14 14-09-2008
    q1wed



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

    Цитата:
    Пробовал не подходит

    Ну тогда, если хочешь помощи, максимально подробно описывай свою ситуацию, что пробовал и что не подходит.

    Всего записей: 208 | Зарегистр. 02-03-2007 | Отправлено: 14:46 14-09-2008
    Pravoved90

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    В принципе решил проблему записью всех идентичных данных под один макрос..Но вопрос остается актуальным..И еще - можно ли сделать таку себе визуальную разделительную черту в самом макросе, чтобы визуально данные не путать?
     
     
    Добавлено:
    Добрый вечер, Господа. Помогите решить такую задачу.
    Есть ячейки а1 в1 с1 d1. Нужно сделать формулу в ячейке a1, чтобы в случае, если в1 = от 1 до 5, a1 = d1, если b1 = от 5 до 10, a1 =c1.
    Можно ли єто сделать в одной формуле, или надо макрос писать?
    ПС Хотелось бы первый вариант, но не могу сообразить..Спасибо

    Всего записей: 511 | Зарегистр. 08-02-2008 | Отправлено: 16:37 14-09-2008
    Mushroomer



    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Pravoved90
    Чего там делать. =ЕСЛИ(ИЛИ(B1<1;B1>10);"нет данных";ЕСЛИ(B1<5;D1;C1))

    Всего записей: 22840 | Зарегистр. 19-01-2002 | Отправлено: 19:06 14-09-2008
    Pravoved90

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Mushroomer
    Спасибо за ответ, просто после макросов голова на полуавтомате)))
    Еще скромный вопрос: Как задать в формулу - сложить все числа столбика, кроме ячеек, залитых красным цветом? Спасибо

    Всего записей: 511 | Зарегистр. 08-02-2008 | Отправлено: 19:14 14-09-2008 | Исправлено: Pravoved90, 19:18 14-09-2008
    SERGE_BLIZNUK

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

    Цитата:
    И еще - можно ли сделать таку себе визуальную разделительную черту в самом макросе, чтобы визуально данные не путать?  

    а чем комментирование кода не подходит?!
    Код:
     
    макрос1
    `____________________________
    макрос2
     

    Цитата:
    Нужно сделать формулу в ячейке a1, чтобы в случае, если в1 = от 1 до 5, a1 = d1, если b1 = от 5 до 10, a1 =c1.

    "ничё не понимаю"...  
    ну а чем формула:
    =ЕСЛИ(И(B1>=1;B1<5);d1;ЕСЛИ(И(B1>=5;B1<10);c1;" диапазон не задан..."))
    не подходит?..
     
    Добавлено:
    сорри, пока читал/писал - проблему Mushroomer уже решил ;-)
     
    Pravoved90

    Цитата:
    Еще скромный вопрос: Как задать в формулу - сложить все числа столбика, кроме ячеек, залитых красным цветом?

    1) зависит от способа заливки (постоянный или условное форматирование)
    2) только макросом. (ну, можно как вариант цвет ячейки получать из пользовательской функции и использовать эту функцию в СУММЕСЛИ(..) - но будет ли это работать - надо проверять...

    Всего записей: 2014 | Зарегистр. 12-09-2002 | Отправлено: 19:22 14-09-2008
    DrMihalich

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Добрый день! Помогите, пожалуйста, решить следующую задачу.
     
    Есть список институтов (например, МГУ, МАИ, МИИТ и т.д.). По каждому институту есть список факультетов. Например:
    - МГУ фак 1, МГУ фак 2, МГУ фак 3
    - МАИ фак 1, МАИ фак 2
    - МИИТ фак 1, МИИТ фак 2, МИИТ фак 3, МИИТ фак 4
     
    Я хочу создать два выпадающих списка. В первом я выбираю институт. И после выбора конкретного института автоматически формируется второй список, содержащий факультеты выбранного института. Т.е. после выбора института при нажатии на ячейку со вторым списком, я должен увидеть только те факультеты, которые относятся к выбранному ранее институту.
     
    Как это сделать? Буду очень благодарен, если вы сможете описать полное решение данной задачи, начиная с того, как правильно завести справочники институтов и факультетов, как правильно задать между ними связь и т.д. Большая просьба, по возможности не использовать макросы и попробовать решить эту задачу через формулы (если такое решение конечно существует).
     
    Спасибо

    Всего записей: 20 | Зарегистр. 20-06-2005 | Отправлено: 20:22 14-09-2008 | Исправлено: DrMihalich, 20:24 14-09-2008
    SERGE_BLIZNUK

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    DrMihalich
    почитайте для начала Приемы, хитрости, трюки и нюансы работы в Microsoft Excel: Связанные выпадающие списки

    Всего записей: 2014 | Зарегистр. 12-09-2002 | Отправлено: 20:33 14-09-2008
       

    Страницы: 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

    Компьютерный форум Ru.Board » Компьютеры » Программы » Microsoft Excel FAQ (часть 4)
    Widok (09-03-2010 13:14): Лимит страниц. Продолжаем здесь.


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru