Просьба пожалуйста помочь c автоматизацией пары небольших функций через кнопки и VBA
Вообщем что есть на данный момент: очень большой массив данных из десяти основных столбцов , в столбцах указаны только трехзначные числа , далее три столбца (Среднее значение по одной строке из 10 столбцов , максимальное и минимальные значения соответственно ) , далее идут ещё десять дополнительных столбцов ,в каждой ячейке которых указаны разница между Максимальным значением и каждым значением из основной строки данных , т.е. если в А1 значение 123 а макс. 168 , то в дополнительную ячейку заносится разница между 168 и 123 (45) , и так в каждую из 10 доп. ячеек
Что выполняется: В каждой основной строке(первые 10 столбцов) каждая ячейка проверяется на соответствие со значением в ячейке МАКС и МИН , если соответствует то ячейка подсвечивается (макс - зеленым , мин - красным) , и так в каждой строке Также в каждую ячейку основной строки (10 первых столбцов) , добавляется приставка со значением из дополнительных десяти столбцов , т.е. в А1 123 и дописывается получившаяся разница из дополнительной ячейки и получается в А1 "123 / 45"
Так как массив данных очень большой по меркам моего пк и постоянно пополняется ,10000 +++ строк , для осуществления всего этого прописаны просто длиннющие формулы , условное форматирование в каждой строке , цвета и подсветы , всё начало жутко долго грузиться и пришлось отказаться от цветов и это оказалось очень существенным минусом , приходиться глазками много моргать и искать то что необходимо, при этом ещё применяются фильтры по столбцам , вообщем применено самое не оптимальное и громоздкое решение , для большего знаний не хватает к сожалению
Как хочется модернизировать :
Добавил две кнопки , одна на подсвет макс и мин , другая для подстановки приставки с разницей (приставку тоже необходимо выделять жирным ) И вот хочется чтобы сначала отработали все фильтры , так как они очень узкие по условиям , то размер существенно сокращается , а далее уже жмем кнопки подсвета и добавления приставки , отработали , сделали выводы ,снова нажали эти же кнопки , приставки все убрались и подсвет , потом убрали фильтры и задаем новые условия
И в дополнение хотел сделать чтобы если приставка с разницей меньше или равна диапазону от -10 до +10 , то вообще не подставляется , но формулы уже были и так дальше некуда ( Также не учитывать пустые ячейки в основной строке из 10 столбцов , очень часто там просто ячейки пустые , а туда у меня все равно знак "/" вставлялся , так как я разделял основную часть и приставку этим знаком
пришлось отказаться от удобств
Примерно представляю что надо задавать цикличность, вводить переменные , но с программированием на языке VBA вообще никак , прощу помочь пожалуйста хоть мыслями хоть кодом Пример с файлом прилагаю
Доброго времени суток господа уважаемые С наступающим праздников всех !
Есть три числовые переменные a b c в текстбоксах каждая соответственно , напротив каждой переменной пустой текстбокс , подскажите как будет выглядеть цикл чтобы прогнать эти переменные и расставить напротив них порядковые места от большего к меньшему , туго с циклами у меня :/
Пару дилетантских вопросов позвольте задать Есть на форме 2 текстбокса ,в первый ввожу числа , а во второй текстбокс введенное число в первый должно округляться
Вопрос первый, куда записать код чтобы на форме результат отображался моментально ,т.е. если ввел в текстбокс 1 число , то оно автоматически отобразилось уже округленное во втором , если стёр в первом , то и во втором стерлось Ну и вопрос второй , основной , необходимо округлять числа по десяткам , то есть например ввёл 123 , округлилось до 120 , 117 в 120 , 264 в 260 , -125 в -130 , -231 в -230, если до 5 то в меньшую сторону , если с 5 включая , то в большую сторону , что то не нашёл я ничего подобного
Последнее код который я пробовал , но не то это (
Код
Dim a As Single
a = Round(UserForm1.TextBox14.Text)
UserForm1.TextBox103.Text = a
Спасибо
P.s НЕ поверю что нет элементарной функции какой то , чтобы не надо было определять число , разбивать его на части , проверять сколько символов , проверять последний символ больше 5 он или меньше , потом уже округлять
получаю путь "C:\Users\fanat\Desktop\Новая папка\Новая папка\1.jpg" , где "C:\Users\fanat\Desktop\Новая папка" это путь где лежит сам проект , то есть ThisWorkbook.Path , как изменить код на получение ссылки на файл чтобы в текстбокс выводился только путь до файла без ThisWorkbook.Path, то есть из данного примера нужно чтобы ,грубо говоря , было примерно так ( отображу математически , программно не знаю как это сделать ) :
UserForm1.TextBox3.Value = Application.GetOpenFilename - ThisWorkbook.Path = "\Новая папка\1.jpg" , получаем ссылку на файл , отнимаем от этой ссылки корневой путь проекта , получаем голую ссылку на файл
Есть нужда во всплывающем окошке типа примечания чтобы в ней отображалась форма VBA Есть куча строк у меня , в каждой строке есть данные на столбцов 20 этак , первый столбец оставил пустым под реализацию примечания , наводим курсор на ячейку А3 допустим , автоматически активируется и появляется примечание с формой в которой отображаются данные этой строки
Возможно ли что то подобное реализовать на языке VBA ? В гугле что то ничего подобного не нашёл Заранее благодарен за любое напутствие
До последнего боролся с этой на мой взгляд простой проблемой Файл загружать не вижу смысла потому что и так будет ясно суть проблемы Вообщем создал кнопку на листе , вызывается форма , на форме Окно Image ,кнопка , текстбокс , при нажатии на кнопку открывается окно выбора файла (проводник) , выбираем файл, жмем ок , путь файла выписывается в текстбокс , далее процедура LoadPicture должна забирать этот путь из текстбокса и загружать картинку в окно Image
Код
Private Sub CommandButton2_Click()
UserForm1.TextBox3.Value = Chr$(34) & Application.GetOpenFilename & Chr$(34)
UserForm1.Image1.Picture = LoadPicture("TextBox3.Value")
End Sub
Как только не извращался с этим кодом , выдает разные ошибки , если напрямую вписывать путь который вставляется в текстбокс то картинка грузится , а как начинаю пытаться забрать путь из бокса так всё , крах, Runtime Error такой сякой
Подскажите пожалуйста как корректно забрать путь из бокса чтобы загрузилась картинка всё таки Спасибо
Доброго времени суток ребята ! Помогите сделать всё проще и быстрей Вообщем есть два листа вторичный(Лист1) и основной(Лист2) Основной лист имеет большой массив данных который постоянно пополняется и обновляется к сожалению вручную через фильтры , помогите всё упростить и заставить машину делать эту работу макросом , необходимо чтобы из Лист1 данные вырезались и обновлялись или добавлялись в Лист2 , исходя из примера сопоставлять нужно по трём столбцам Ф,И,О. на Лист1 вводится ФИО человека , данные которые необходимо будет обновить или добавить (в примере это просто числа в столбцах D E F G H ) ,выбираем смену из выпадающего списка(1 или 2 ) , жмем кнопку Обновить и в зависимости от выбранной смены данные напротив каждой ФИО на Лист2 должны обновиться ,а если такой ФИО нет , то добавляется в первую пустую строку на Лист2 . После обновления данные с лист1 должны удалиться вместе с ФИО
Надеюсь на помощь Спасибо Прошу прощения за непонятный код ниже , не понял откуда он берётся
На листе1 есть кнопка вызывающая форму с комбобоксом , в этом комбобоксе нужно чтобы отображался динамический список с лист2 столбца А ( динамический имеется в виду если в столбце А на лист2 обновится список чтобы автоматически он обновлялся и в комбобоксе. вписал в код формы
Код
Private Sub UserForm1_Initialize()
Dim iMassiv
iMassiv = Sheets("Лист2").Range("A1:A10").Value
ComboBox1.List = iMassiv
End Sub
никаких изменений не произошло ... комбобокс остался пустым
Доброго времени суток уважаемые форумчане Вообщем проблема такая.. на кнопке висит макрос копирования данных с одного листа на другой , вылазит ошибка Run-time error '13': Type mismatch , мол несоответствие типов , перепробовал всё что перепробовал бы каждый, капризничает и ничего не поделать
в приложенном мной файле два листа , на лист1 кнопка при нажатии на которую номер активной строки отправляется в ячейку А1 на лист2 и перекидывает на лист2 , на листе вторая кнопка при нажатии на которую данные должны скопироваться на лист1 с координатами- номер строки находится в А1 (та самая активная строка листа1) , а номер столбца фиксирован и указан непосредственно в макросе.. вот код этой кнопки
Код
Sub Лист2_Кнопка3_Щелчок()
With Worksheets("Лист1")
.Range("I3").Copy Destination:=Worksheets("Лист2").Cells(.Range("A1"), 19)
End With
End Sub
Вообщем I3 - это значение которое нужно скопировать с лист2 в лист1, (.Range("A1",19) - номер строки находится в А1 , а 19 это фиксированный номер столбца Не знаю важно это или нет , но значение I3 которое надо переместить на лист1 с лист2 получается формулой
Добрый всем дня Ребят совсем запутался в элементарном
Вообщем есть документ в котором два листа , на первом листе есть наименования фруктов и кнопка при нажатии на которую в лист2 в ячейку А1 копируется номер активной строки которая была выбрана в листе1 , а на листе2 помимо номера активной строки есть ещё поля для ввода данных (Страна , Вес , цена )и кнопка при нажатии на которую должны копироваться данные из этих ячеек на лист1 в ту строку которая указана в ячейке А1 на листе2 , при этом номер столбца фиксированный , проще говоря адрес строки динамический в зависимости какая была выбрана , а столбец фиксированный прописанный в макросе , вот голову сломал , помогите пожалуйста , файл прилагается
Имеются данные результатов футбольных матчей , хочется чтобы исходя из этих результатов по требованию формировались таблицы , то есть по нажатию кнопки появлялось окошко где нужно выбрать диапазоны (команд хозяев ,команд гостей ,голы хозяев ,голы гостей ) и по нажатии кнопки сформировать , выводятся таблицы на другой лист в виде общей таблицы , таблицы только домашних игр , таблицы гостевых игр со столбцами - количество сыгранных игр , побед , ничьих , поражений , забитых голов , пропущенных , разницы между ними , количество очков .
Это не полный список желаемого , за подробностями обращайтесь в личку , скоординирую заодно обсудим
Доброго времени суток уважаемые форумчане Появилась необходимость заполнять ячейки через программную форму ввода ,так как все данные находятся в одной строке , а столбцов много что 3 раза в экран не помещаются , решил обратится за помощью к вам уважаемые
Вообщем в приложенном мною файле есть список очередного футбольного тура , напротив каждого матча создал кнопку , при нажатии вызывается форма в которой вводится подробная статистика матча , помощь прошу вот в чём : - нужно чтобы после нажатия на кнопку Добавить данные из формы копировались в определённые ячейки Также есть пару второстепенных вопросов : -Хотелось чтобы в форме в текстовых полях Label1 и Label2 отображалась названия команд -Напротив каждого матча есть своя кнопка и я так понимаю что для каждой кнопки нужно писать свой код , что очень не практично, возможен ли вариант чтобы при нажатии на кнопку она определяла какая это строка и вставляла затем данные в ячейки на пересечении никогда неизменяемых номеров столбцов ?
Надеюсь понятно донёс свою проблему Спасибо , очень надеюсь на помощь
Доброго времени суток уважаемые , нужна помощь кто разбирается в ВБА программировании
На листе 1 в примере есть форма для заполнения данных и кнопка при нажатии на которую нужно чтобы эти данные переносились на лист 2, при этом данные в ячейках на листе 1 очищались , и при следующем копировании на лист 2 данные располагались ниже на строку т.е. если при первом копировании данные вставлялись в а1,b1,c1 на лист 2 , то при следующем копировании данных они должны вставляться a2,b2,c2 на лист 2 и т.д . Надеюсь более менее ясно объяснил
На листе 1 отображены таблицы с данными , на листе 2 расположена форма выпадающего списка . В форме указаны названия таблиц с листа 1 (в приложенном примере это 1 января , 2 января , 3 января ) . Как сделать чтобы при выборе имени таблицы в выпадающем списке та выводилась на лист 2 . Пробовал переименовывать таблицы в диапазоны не получилось ..
Доброго времени суток всем читающим эту тему Проблема казалось бы на первый взгляд детская , но как оказалось для меня нерешаемой Вообщем есть футбольная таблица с 5 столбцами названия команд, очки набранные , забитые мячи , пропущенные мячи , и разница мячей . Хотелось бы привести таблицу в обычный футбольный вид - отсортировать по очкам , а затем у кого одинаковое количество очков отсортировать по колонке разницы мячей . Беда в том что после сортировки ,что после применения фильтра данные не соответствуют действительным , путаются . Как я только не пытался , какие диапазоны не выбирал , никак не получается .
Вообщем прикреплю таблицу , помогите пожалуйста разобраться , Excel 2007 у меня
Есть лист с общей таблицей товаров (накладная) и есть лист с выпадающим списком этих же товаров . Нужно чтобы на листе Товар при выборе из выпадающего списка(A2) товара выводился диапазон с B:N из общей таблицы (по примеру ),т.е. нужно чтобы выводилась накладная только по выбранному товару (товар + данные по товару ) . Пробовал ВПР , что то как то не получилось , издевался с формулами по всякому , никак не выходит
Можно ли автоматизировать перенос текста из определённых ячеек в нужную ячейку?!
Вообщем по файлу примеру попробую объяснить суть
Есть столбец с Заказами и есть таблица с данными по каждому заказу . Необходимо чтобы допустим в ячейку для Заказ 1 заносилось примечание в котором указывались бы данные по этому заказу . Я представляю код макроса как то так : [Номер ячейки заказ1]=[ячейка1],[ячейка2],[ячейка3].AddComment . Как это оформляется на языке Vba я не знаю , поэтому прошу помочь кто в этом разбирается
Столкнулся с такой проблемой , необходимо чтобы гиперссылка на другой лист в ячейке появлялась только тогда , когда в другой есть текстовое значение,т.е. что в виде =ЕСЛИ(А1="";"";ГИПЕРССЫЛКА(Лист2!А5;"Ссылка")). Думал что обойдусь обычными ЕСЛИ и ГИПЕРССЫЛКА , но оказывается формулой ГИПЕРССЫЛКА на другой лист не перекидывает . Поэтому нужен макрокод , в котором я понятия не имею что написать .
Думаю есть другие варианты решения , поэтому надеюсь на помощь .Спасибо . PS. Пример не прикладываю , потому что размещать в нём нечего .
Необходимо чтобы при выборе радиокнопки в ячейку выводилось определённое значение
Например если выбрана кнопка 1 , то выводится число 1 в ячейку B7, меняем выбор кнопки на другую в ячейку B7 выводится 0 . Важно! По стандарту выбрана кнопка 1 , и число в ячейке b7 =1 .Пример прилагается.
Есть два связанных списка на разных листах . Нужно чтобы значение при выборе из списка на листе 1 активировалось в списке на листе 2 . Иными словами что выбрано в списке на листе 1 должно быть выбрано и на листе 2 .
Пробовал задать имя диапазона первому списку и выводить список 2 по этому имени диапазона ,выбранное значение помещается в список 2 , но его надо выбрать , а необходимо чтобы оно сразу было выбрано (активно) , потому как под список записан огромный макрос и весь автоматический процесс макроса обрывается на том , что в списке 2 не активно значение и его нужно выбирать руками
Знаю что много измусолено на эту тему , но всё же прошу помочь.
Имеются 3 радиокнопки . Необходимо чтобы по активности одной из трёх скрывались определённые строки . Пробовал записью макроса , не получилось кнопки , не реагируют .По примеру прикреплённого примера . Если активна кнопка с названием 5 то скрываются строки 16-20 , если активна кнопка 7 то скрываются строки 18-20 , а если выбрана кнопка Все то строки 11-20 отображаются . Важный момент : по умолчанию нужно чтобы была активна кнопка 5 и строки 16-20 уже скрыты .
Имеется два выпадающих списка созданных путём проверки данных и две таблицы данных с результатами матчей .
Необходимо чтобы выводились те строки из таблиц , в которых присутствуют обе команды выбранные из выпадающего списка ( иными словами Личные встречи) . Таблицы с результатами расположены на разных листах .
Нужна помощь корректировке формулы , я считаю что записано всё верно , но работает почему то некорректно
Вообщем вот формула =ЕСЛИ(ЕПУСТО(H52);"";ЕСЛИ(H52="Дома";ЕСЛИ(L52>M52;"В";ЕСЛИ(L52=M52;"Н";"П"));ЕСЛИ(M52>L52;"В";ЕСЛИ(M52=L52;"Н";"П"))))
Часть после ЕПУСТО работает корректно , а вот условия на проверку пустоты нет. Проблема в том что если ячейка Н52 будет пустой , то по идее в ячейке где эта формула ничего не должно происходить , т.е. "", но происходит почему то иное , во всех ячеках где пусто выводит "Н". Файл прилагается .
Вообщем есть на одном листе две таблицы (Таблица 1 и таблица 2 ) , над таблицей 1 есть три радиокнопки , которые в зависимости от активности вносят из таблицы 2 строки на основе условия записанного в макросе (проще говоря выборка ). А вот данные для таблицы 2 берутся по средством выбора из выпадающего списка(тоже макросом ) Перейдём к сути проблемы: Каждый раз как в списке выбираешь другие данные ( в моём случае команду) , то в таблицу 2 все данные по этой команде заносятся корректно , но в таблице 1 данные не обновляются, в ней остаются данные по прошлой команде до тех пор пока не поклацать по радиокнопкам . Это очень дезориентирует , появляются неудобства . Так вот что нужно дописать чтобы диапазон таблицы 1 при смене команды через список обновлялся автоматически ?
В приложенном файле только макрос с выборкой , если будет необходим макрос с заполнением таблицы 2 , прикреплю , просто размер превышает 100 кб .
Нужна помощь в написании макроса Суть в следующем:
На одном листе расположено 2 таблицы : пустая и с данными , 3 радио кнопки с соответствующими названиями "Все" , " Дома" , " В гостях".
Необходимо чтобы таблица номер1 заполнялась в соответствии с выбранной радио кнопкой на основе таблицы номер 2 . Т.е. если выбрана кнопка "Дома" то в таблицу 1 идут все строки из таблицы номер 2 в столбце "С" которых есть текст Дома . И обратно выбираем Все , и все матчи из таблицы 2 идут в таблицу 1 . Тоже самое и с кнопкой В гостях .
Вообщем есть таблица с данными , несколько радио кнопок . Нужно осуществить связь между кнопками и таблицей с данными для фильтрования по заданным условиям в зависимости от того какая кнопка активна . Мне бы хватило и стандартного фильтра если не одно НО! Рядом с этой таблицей находятся ещё данные , а как известно стандартный фильтр экселя просто скрывает строки когда осуществляет фильтрование , фильтруя необходимую таблицу задевает ещё таблицы находящиеся рядом , которые трогать не нужно . Вообщем нужен фильтр чтобы работал в заданном диапазоне ,чтобы работал не на основе скрытия строк.
Мой пример.
Таблица с результатами матчей определённой команды. Три кнопки Все, Дома, В гостях. В столбце С уже прописано где играла команда.Необходимо осуществить связь между столбцом С и кнопками. То есть если выбрана кнопка Дома , то все строки Дома формируются по порядку начиная сверху , а строки В гостях удаляются . Обратно выбирая кнопку Все , появляются все строки в том порядке в каком и были изначально . Но возможно ли такое в эксель чтобы удалённые данные где то сохранялись с возможностью их вернуть на прежнее место .
Имеется таблица с данными , имеется выпадающий список через проверку данных-список , имеется пустая таблица , в которую при выборе в выпадающем списке попадают матчи только той команды которая была выбраны . И всё это расположено на одном листе .
хотелось бы преобразовать имеющийся макрос так , чтобы таблица с матчами находилась на листе 3 допустим , а на листе 1 находилось два списка и две таблицы для вывода (Соответственно для Команды1 и команды2)
Если это дело мутное , то не утруждайтесь . Просто предложенные преобразования облегчат работу и можно будет отказаться от комбинаций Ctrl+C и Ctrl+V
В этому посту прикрепляю файл с имеющимся макросом ,а в следующем прикреплю файл , то как хотелось бы видеть
Нужна помощь в корректировке макроса , ей Богу не знаю почему работает не правильно , хотя до этого всё работало . Макрос писал GIG_ant. За что ему спасибо
Всем желающим оказать помощь вот краткое описание :
Таблица данных , выпадающий список созданный способом проверки данных - список , пустая таблица . При выборе в выпадающем списке названия команды , все строки диапазона заданные в макросе и содержащие название выбранной команды из списка переносятся в соседнюю таблицу . беда в том что отбирается по названию корректно , но копируется чёрт пойми куда хотя ничего не менял в макросе и работало раньше всё как нужно . Может я не учитываю какие то мелочи , вообщем кто может помогите , буду премного благодарен !
Имеется большая таблица данных , но через какой то интервал строк таблица прерывается на одну строку и потом опять продолжается , т.е некая воображаемая точка пунктир таблица если можно так выразится . При протягивании формул в соседних ячейках таблицы , в тех строках где прерывается таблица происходят расчёты , что в последствии влияет на конечное решение . Вот нужен макрос простенький , в котором бы вписывались номера строк которые нужно очистить,а то вручную очень долго это производить