Почитав в интернетах про циклы, я узнал что есть такая вещь как цикл Do Loop Until - "предназначен для организации цикла-до. Инструкции будут выполняться до момента, когда выражение станет истинным." вот я и пытаюсь написать цикл
Код
Function sechenie2(L, cosf, Ip)
Dim dU As Long
Dim S As Range
Set S = Range("F12:F21")
Do ' подставляем значения сечений из диапазона до тех пор пока значение dU не станет меньше 4 процентов
S = Range("F12:F21")
dU = 2 * ((0.0225 * L * cosf / S + 0.00008 * L * (1 - (cosf) ^ 2) ^ 0.5)) * Ip * 100 / 220
Loop Until dU < 4
sechenie2 = S
'For i = 12 To 21 'перебираем строки с 12 по 21
'If Cells(i, 5) > Ip And Cells(i, 7) < dU Then 'если проходит проверка и по току и по потере напряжения
' sechenie2 = Cells(i, 4) 'выбираем кабель из перечня
' Exit For 'выходим из цикла
'End If
' Next
End Function
но я не понимаю следующего: 1. Правильно ли я задал диапазон и будут ли вообще из него браться числа для расчета и подставляться в формулу??? Т.е. как вообще узнать, что цикл понял, что ему нужно брать данные именно из диапазона S, и пойти вниз чтобы начать брать значения для расчета, а не в лево или куда еще. 2. Как узнать на какой ячейке из диапазона остановился цикл и узнать что написано в этой ячейке. Собственно это и должно стать ответом в пользовательской функции.
Привет всем. Научите пожалуйста пользоваться циклом. Читаю я про них читаю, но без конкретного примера ничего не понимаю, а примеры которые нахожу и понимаю не подходят под мою задачу. Нужно в ячейку В2 поставить нужное значение значение из столбца F (диапазон F12:F21 - сечение кабеля). Условие у цикла следующее: имеем значение в ячейке В5, цикл просматривает значения в диапазоне Е12:Е21 и когда в столбце Е дойдет до значения большего чем В5, то должен в ячейку В2 поставить значение ячейки из диапазона D12:D21. Например в ячейке В5 значение 50, цикл просматривает диапазон Е12:Е21, останавливается на ячейке Е14 т.к. 55>50 и ставит в ячейку В2 значение из D14 -1х10
Добрый день, гуру эксель! Начальника озадачил(((, сделал он график отпусков. В нем по дням отмечено кто в какой день идет (зеленая заливка с цифрой 1). График получается очень длинным - листать ему лениво. И задача передо мной такая, нужно сделать такую ячейку в которой будет показываться промежуток в который человек идет в отпуск, т.е. чтобы писалось, например, с 25.02.219 по 3.03.2019. Т.е. формула просматривает всю строку и пишет с какой и по какую дату у человека первый отпуск (второй отпуск) Как сделать такую формулу, чтобы она брала первую и последнею дату отпуска человека, т.е. по сути первое и последнее значение из диапазона. При этом еще эти единицы нужно переделать в даты! А при условии что у человека может быть несколько отпусков в году, как это возможно реализовать?
Добрый день, гуру экселя. Нашел тут у себя на работе форму кабельного журнала и пытаюсь ее под себя адаптировать. Но не могу разобраться в части кода, которая копирует марку и длину трубы. И так в чем суть работы таблицы. На вкладке КТЖ я рассчитываю всю свою сеть, указываю типы кабелей и труб, их длины; потом с нее формирую кабельный журнал на вкладке "Кабельный журнал". Кабели встают нормально, а вот трубы не очень. В коде прописано как вставлять трубы, но я хочу чтобы они просто вставлялись так же как и кабели. Но в коде очень для меня все не понятно в той части. Думаю для программиста там все логично, но мне как-то вообще не ясна логика. Помогите!!
Добрый день Гуру эксель. И так по рекомендации vikttur создал новую тему. vikttur, увы за 6 лет научился делать только самые простые макросы, и допиливать чужие коды под свои нужды, но тем не менее создал для полезную штуку (если интересно вот она https://cloud.mail.ru/public/2Rt1/UHydUYVX2, она тяжелая поэтому положил на сервер). Но теперь решил сделать что то реально сложное, ну для меня по крайней мере сложное. И так нужно решить задачу подбора кабеля по мощности нагрузки: 1. Имеем мощность нагрузки - А2, значение может быть любым в пределах разумного. В примере 5 кВт 2. Считаем ток в ячейке D2 (для этого мы выбираем на какой фазе будет сидеть потребитель А, В, С или АВС - но это не так важно). В примере фаза А и ток равен 36А 3. В ячейке F2 выбираю из списка кабель чтобы его номинальный ток который показывается в С2 был больше тока расчетного который показывается в D2. Т.е. 3х1,5 удовлетворяет условию. Теперь нужно сделать вторую проверку кабеля по потере напряжения 4. В ячейку G2 заносим длину кабеля до потребителя. например 100 м 5. В результате в ячейке I2 видим что потери составляют 34,62% (по норме не более 5) 6. Теперь перебирая сечения в F12 и дойдя по порядку до кабеля 3х16 мы видим выполнение двух условий: значение I2меньше 5 значение в С2 больше D2 все, кабель выбрали. Вот такую вещь с двумя проверками не могу сделать. Жду подзатыльников
Здравствуйте Гуру экселя. Кошмар прошло уже 6 лет как я задал свой первый вопрос тут. http://www.planetaexcel.ru/forum/index.php?PAGE_NAME=message&FID=8&TID=19545&TITLE_SEO=19545&MID=172... конечно вы скажете что за 6 лет наверное можно научиться программировать, ну согалсен можно, признаюсь честно, не очень то хотел, т.е. хотеть то хотел, но вот глубоко копнуть так и не получилось, хотя можно сказать что не хотел копнуть глубоко. Но благодаря вам научился писать макросы (понимать что нужно изменить в макросе других участников сайта под себя) которые мне как проектировщику помогли облегчить жизнь в некоторой степени. Это я все к чему, к тому что я стараюсь не лениться и учиться. Теперь решил выйти на новый уровень программирования, ура!:-) Так вот как решить следующую задачу подбора кабеля: имеем нагрузку - ячейка B10, по ней считаю ток J10, ставлю длину кабеля S10, получаю какое то значение потерь в Y10 и руками выбираю кабель в AI10 пока значение потерь напряжения в BS10 не достгнет значения меньше 5%. Понимаю что эту задачу нужно решать циклом, и что это просто, но кааааааак..... я так и не понял сколько не читал про циклы как заставить цикл идти по диапазону сечений кабеля, потом считать потерю напряжения и сравнивать его с 5%, и остановить его. жуть просто для меня. Прошу направить на путь истинный(((
Здравствуйте, гуру экселя! Вот пытаюсь создать формулу для выбора сечения кабеля. Но только не пойму, хотя признаюсь, что не знаю, как заставить эксель пробежаться по заданному диапазону сечений, и подставить в итоговую ячейку нужное расчетное сечение. Понимаю что тут нужен цикл, только вот какой синтаксис в нем будет - ума не приложу(((. Простенькие формулки осилил, а эту задачку - вообще никак...
Добрый день, гуру эксель! Подскажите, как сделать такую вот сортировку (см. вложенный файл). Т.е. есть произвольное кол-во строк и вариаций номиналов, хочу вот сделать что-то по типу сводной (обвел рамкой) да не совсем. Пытался сам как-то сделать через формулу "сцепить" - но что-то как-то не получается, не избавился от рутины, да и толком не работает
Здравствуйте Гуру эксель! Задачка из простейших но тем не менее ввергла в полное уныние. И найти что то не смог ничего((( В общем. Сделал форму, на ней есть CheckBox1, так же на ней вешаю кнопку которая будет запускать макрос. В этом макросе связь с этим CheckBox1
Код
Sub Однолинейка()
If CheckBox1 = True Then Range("D3") = 300
End Sub
Ну там конечно действий больше, но даже такое маленькое не выполняется((( Собственно что не так?
Здравствуйте гуру эксель! такая у меня задачка, подозреваю что простая, но увы ввиду VBA безграмотности вновь беспокою вас. Есть данные, кол-во произвольное, кол-во столбцов тоже может меняться но не сильно, а вот кол-во строк может доходить до безумного для меня числа. нужно на каждом новом листе помещать по 15 строк (со строки 1 до 15) (ну или другое кол-во, тут может кол-во поменяться) с первого листа данных, на втором листе получается следующие с 16 по 31 и т.д. до конца данных на первом листе. вот...
Здравствуйте, гуру эксель! Бьюсь над такой задачей. Нужно сцепить ячейки между столбцами М и Т по хитрому условию, если они все заполнены тогда вопросов нет, сцепляю по обычному. Но ячейки в них могут быть как заполнены так и нет. И нужно эту пустоту как бы смещать! Ну в файле я вроде все понятно сделал.
Здравствуйте гуру эксель! Прошу помочь с такой задачей. Хочу сделать форму со следующим смыслом работы! Есть 4 условия (кружочки) и одна галочка, в зависимости от условий 1,2,3,4 берутся соответственно данные из данные 1,2,3,4 и копируются на место "то что хочу получить" - по нажатию на кнопку "Формируем". Есть еще условие "Проверка" если стоит 1 то строка эта не копируется. Как это все сделать с юзер форм так и не понял, если прошу многого то подскажите как связать нажатие кнопки Формируем т.е. CommandButton1_Click с 4-мя и более OptionButton1_Click, и CheckBox1_Click как выглядит такой текст на VBA. Как это все сделать с элементами без юзерформ я то осилил. А вот теперь хочу выйти на новый уровень так сказать и научиться пользоваться юзерформ
Здравствуйте гуру эксель! такая вот задачка у меня, есть две строки, из этих двух строк данные нужно сместить в одну строку. Уже с этим вопросом к форуму обращался, подсказали знающие люди чумовую формулу (выделено желтым). Но вот обстоятельства вынуждают делать это дело все таки макросом. пытался там что то сам, но ввиду VBA безграмотности ничего так и не смог
Здравствуйте, уважаемые гуру эксель! Такой вопрос, делаю полезную штучку для себя. У меня есть вспомогательные листы, на которых я подготавливаю данные, потом я эти данные с них собираю и они мне уже не нужны - и я их скрываю. Но потом макрос уже не работает т.к. листы скрытые. пишу такой макрос
Код
Sub Ìàêðîñ1()
'
' Ìàêðîñ1 Ìàêðîñ
'
'
Range("A1:A20").Select
Selection.Copy
If Worksheets("Ëèñò3").Visible = False Then
Worksheets("Ëèñò3").Visible = True
End If
Sheets("Ëèñò3").Select
ActiveSheet.Paste
'Worksheets("Ëèñò3").Visible = False
Application.CutCopyMode = False
Selection.Copy
Sheets("Ëèñò1").Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
Application.CutCopyMode = False
With Selection
.HorizontalAlignment = xlGeneral
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 90
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Range("A1").Select
End Sub
Что то шрифт слетел. Ну вот, и я сначала лист открываю делаю с ним что нужно потом опять закрываю - подозреваю что можно сделать как то проще, подскажите пожалуйста!
Здравствуйте уважаемые гуру экселя. Такая задача у меня рутинная. Нужно скопировать заданный диапазон с одного листа (PR-1200) на все остальные листы рабочей книги.
Сам смог найти только макрос который создал мне листы с именами из диапазона, а вот как накопировать данные на листы так и не смог ничего найти подходящего. а их под двести штук, помогите !!!!))))
Изменено: Timur - 27.11.2014 03:30:06(что то пошло не так)))))
Добрый вечер гуру эксель! подскажите как выбрать максимальное значение по двум условиям. из диапазона В2:С7 нужно в ячейку С10 вытащить максимальное значение однофазного тока, а в ячейку В10 записать название фазы. И с трехфазным током нужно сделать тоже самое. При этом еще название группы вытащить. Замучался просто! По форуму лазил но всяике там формулу по типу суммесли и произвсумм как приделать не догадался.
Всем привет!, понимаю что дублировать темы ни есть хорошо, но по другому не сумел, нашел в архиве форума эту ветку http://www.planetaexcel.ru/forum/index.php?PAGE_NAME=read&FID=8&TID=14240 только там сообщение дописать получается нельзя! Вот! Уважаемый, Юрий! В этой ветке форума нашел ваше решение по созданию одной общей таблицы со сбором данных таблиц одинакового формата из разных файлов Попробовал адаптировать ваш макрос под свою задачу...увы...знания бейсика не хватает
Скрытый текст
Код
Sub Roka() 'http://www.planetaexcel.ru/forum.php?thread_id=15188 (Старался Юрий М)
Dim iLastRow As Long 'Переменная для номера последей строки файлов-исходников
Dim LastRow As Long 'Переменная для номера последей строки этого файла
Dim ish_Wb As String 'Переменная для имен файлов-исходников
Dim Way 'Переменная для пути к файлам-исходникам
Dim Work_Wb As Workbook 'Переменная для этой книги
Set Work_Wb = ThisWorkbook 'Установили её
LastRow = Cells(Rows.Count, 1).End(xlUp).Row 'Определили номер последней строки по столбца А
Application.DisplayAlerts = False 'Отключили сообщение о тревогах
Application.ScreenUpdating = False 'Отключили обновление экрана
Range(Cells(7, 1), Cells(LastRow + 1, 14)).EntireRow.Delete 'Удалили строки в таблце (кроме заголовка)
LastRow = 6 'Последняя строка = номеру строки заголовка, т.е. 6
With Application.FileDialog(msoFileDialogFilePicker) 'Для окна-диалога выбора файлов
.AllowMultiSelect = True 'Разрешаем выбор нескольких файлов
.InitialFileName = "*.xls" 'Установили маску типов файлов (только xls)
.InitialFileName = "" 'Папка с файлами-исходниками
.Title = " Выбрать необходимый файл(ы)" 'Заголовок окна диалога
If .Show = False Then Exit Sub 'Если закрыли окно - выходим из макроса
For Each Way In .SelectedItems 'Начинаем в цикле перебор выбранных файлов
Workbooks.OpenText filename:=Way 'Открываем выбранный файл
ish_Wb = Dir(Way, vbDirectory) 'Присвоили переменнной его имя
''''''''' Начинается блок обработки файла (файлов)'''''''''''''''''''
Sheets("Управление проектом").Activate 'Активируем первый лист
iLastRow = Cells(Rows.Count, 1).End(xlUp).Row 'Определили номер последней строки в файле-исходнике
With Work_Wb.Sheets("Управление проектом") 'Применительно к основному файлу
Range(Cells(7, 2), Cells(iLastRow - 1, 5)).Copy .Cells(LastRow + 1, 2) 'Скопировали "левый" блок
Range(Cells(7, 7), Cells(iLastRow - 1, 12)).Copy .Cells(LastRow + 1, 7) 'Скопировали "правый" блок
LastRow = Cells(Rows.Count, 2).End(xlUp).Row 'Определили номер последней строки в файле-приёмнике после вставки
End With
Workbooks(ish_Wb).Close False 'Закрыли обрабатываемую книгу-исходник без сохранения
''''''''''Здесь заканчивается блок обработки файла ''''''''''''
Next Way 'Переходим к следующему файлу-исходнику
End With
LastRow = Cells(Rows.Count, 2).End(xlUp).Row 'Определили номер последней строки в файле-приёмнике после вставки
Application.ScreenUpdating = True 'Включили обновление экрана
Application.DisplayAlerts = True 'Включили сообщение о тревогах
End Sub
так как мне ничего складывать не нужно, думаю правильно сделал что выкинул часть кода. Переименовал Лист1 на имя моего листа. Однако с остальным так и не совладал. Помогите пожалуйста с решением!
Здравствуйте Гуру экселя. Подскажите пожалуйста как сделать вставку столбцов между столбцами через один столбец. Т.е. у меня есть столбцы (иногда до неприличия много), например, АБВ а нужно чтобы между ними встал пустой столбец А Б В. Вставка обычным методом ну крайне трудоемка, макрос пытался такой найти, но все что находил из-за вижулбэйсиковской безграмотности доработать так и не смог(((
Здравствуйте! Гуру экселя, пожалуйста, подскажите макрос или как записать макрос что бы он сохранял текущий лист в формате CSV в папку где лежит этот же файл экселя без лишних запросов, т.е. эксель начинает спрашивать сохранять ли потом книгу, укажите путь и т.д., вот без этих запросов. Пытался сделать макрорекодером а он вообще ничего не записывает. Подскажите пожалуйста как это сделать.
Добрый день! Прошу помочь вот с чем: имеется 2 строки: А Б В Г Д Е и т.д. и строка 1 2 3 4 5 6 их нужно совместить таким образом чтобы в третьей строке был результат А 1 Б 2 и т.д. Вроде думал что просто а оказалось не могу((((
Здравствуйте, Гуру экселя! Прежде чем обратиться, я конечно же поковырялся на форуме, что то близкое нашел здесь: http://www.planetaexcel.ru/forum/?PAGE_NAME=message&FID=8&TID=35174&MID=304741#message304741 идея вроде та, но как ее применить к себе так и не осознал(((. И так: есть N-е кол-во реле ну в моем случае пока только 4 штуки, у них свои хар-ки, в зависимости от выбора реле на графике показывается его хар-ка, если выбираю пустое место то ничего не показывается. Есть N-е кол-во участков, ну опять пока только 4, на них стоят эти реле. И вот на каждом участке я могу выбирать любой тип реле, и соответствующая хар-ка должна появляться. Подскажите пожалуйста как это сделать!
Здравствуйте гуру экселя! Можно ли в экселе реализовать следующее: существует диапазон данных, состоящий из n-го кол-ва строк и столбцов (немного 5-6) можно ли сделать так чтобы при нажатии (наведении) на ячейку появлялся этот диапазон, как по аналогии с календарем в ячейке, я это имею ввиду.
Добрый день всем!!! Пишу небольшую формулку, подскажите, пожалуйста, как правильно !
Function проверка(KK) If KK = "КВВГнг(А)-LS" Then проверка = 1 End If End Function
Теперь мне нужно проверять еще по маркам КВВГЭнг(А)-FRLS, КВВГЭнг(А)-LS и еще по другим которые вдруг придется добавлять. Думал использовать Or но у меня не получается, выходит ошибка (ругается на запятую) Function проверка(KK) If KK = "КВВГнг(А)-LS" Or ("КВВГЭнг(А)-FRLS", и т.д.) Then проверка = 1 End If End Function Подскажите как и куда надо правильно писать, сам не программист так что не ругайте сильно!
Здравствуйте! Понимаю что тема избита, на старом форуме ответов масса, однако при попытке скачать файл с примером меня перебрасывает на новую версию сайта и на этом все. Задачка у меня простая, удалить пустые столбцы на листе с определенным именем, оставить только столбцы с текстом или значениями.
Гении эксель помогите! задача ерундовая, есть значение например 19 ему соответствует значение 1,5; есть значение 25 ему соответствует 2,5!! Внимание вопрос, если допустим у меня значение 20 или 23 то нужно выбирать большее т.е. 2,5, Как мне это реализовать???((( функция ВПР выбирает меньшее значение, а мне нужно наоборот большее((( прилагаю файлик!!!