Выбрать дату в календареВыбрать дату в календаре

Страницы: 1 2 След.
Добавить еще один лист в новую книгу, выводимую макросом
 
Добрый день, есть макрос, который сохраняет текущий лист из открытой книги в текущую папку, присваивает ему имя из ячейки N8 и заменяет формулы значениями:
Код
Sub New ()
Dim AW As Window
    Dim CellValue As String
   Dim Path As String
   Dim FinalFileName As String
   Path = ThisWorkbook.Path & "\"
   Application.DisplayAlerts = False
       Set AW = ActiveWindow
    For Each s In AW.SelectedSheets
        Set TempWindow = AW.NewWindow
        s.Copy
        TempWindow.Close
   CellValue = Range("N8")
   FinalFileName = Path & CellValue
   ActiveWorkbook.SaveAs Filename:=FinalFileName, _
                      FileFormat:=xlOpenXMLWorkbook
   Application.DisplayAlerts = True
    Next
           For Each ws In ActiveWorkbook.Worksheets
        ws.UsedRange.Value = ws.UsedRange.Value
    Next ws
    End Sub

Лист этот имеет одинаковое имя, например "Лист1". В книге есть еще несколько листов, в том числе "Лист2". Никак не соображу как добавить в выводимый файл этот "Лист2" и также заменить формулы на нем значениями. То есть в выводимом файле должно быть 2 листа: текущий лист "Лист1" с которого запускается макрос и "Лист2"
Двухуровневая фильтрация с учетом фильтра
 
Здравствуйте, в свое время потребовалось сделать двухуровневую нумерацию в Excel вида 1, 2, 3... для заголовков и 1.1, 1.2, 1.3..., 2.1, 2.2... и т.д. для обычных строк. В примере в столбце "S" для заголовков указан критерий "заголовок" и есть столбец "T", в котором указан Объект. Для каждого объекта должна быть своя нумерация с единицы. Ранее все объекты шли в таблице по порядку и для того, чтобы сделать нумерацию воспользовался найденной в интернете пользовательской функцией "НУМЕР", которая делает двухуровневую фильтрацию по доп.столбцу, где должны быть указаны уровни фильтрации: для "1" будут выводиться 1,2,3, для "2" 1.1, 1.2, 2.1 и т.д. С помощью формулы, которая проверяла изменение объекта и переводила заголовки и пустые строки в столбце "S" в "1" и "2", нужные для работы пользовательской функции НУМЕР ранее все работало:
Код
=@ЕСЛИ(СМЕЩ(T18;-1;0)=T18;нумер(ЕСЛИ(S18="заголовок";1;2));1)
Но сейчас объекты стали "вперемешку" как в примере. И нужно, чтобы нумерация была как будто с учетом фильтра в столбце "T". Помогите, пожалуйста, поменять имеющуюся формулу или может быть проще новую формулу (без пользовательской функции), чтобы нумерация получилась как в столбце "B" в примере, как будто бы с учетом фильтра объектов в столбце "T"
Не работает макрос после применения другого
 
Здравствуйте, проблема очень специфичная, но не понимаю почему так. Есть макрос (Макрос 1):
Код
Sub Убрать_ошибку()
Range("O19:O20").Replace What:="+#REF!", Replacement:=""
Range("O19:O20").Replace What:="=#REF!", Replacement:="="
Range("O19:O20").Replace What:="=+", Replacement:="="
End Sub
который убирает ошибку #ССЫЛКА!, то есть по сути это аналог "Найти и заменить" в Excel. Если в примере его сразу запустить (можно через кнопку Макрос 2), то он убирает ошибку #ССЫЛКА!в ячейках O19, O20.
Проблема в том, что в книге есть еще один Макрос 1 Перенос. Он переносит данные с листа "ВОР" на лист "ВОР2" по заголовку. Вроде бы он никак не связан с макросом 2, там даже прописаны листы на которых он работает и листа "ОБЩИЙ" он не затрагивает. Этот Макрос 1 нужно запускать до Макроса 2. Так вот после срабатывания Макроса 1, Макрос 2 перестает работать. Можно после запуска Макроса 1 закрыть файл, открыть его заново и запустить Макрос 2, тогда он сработает корректно, но файл не нужно закрывать по условию задачи. Может кто-то подскажет, почему так происходит. Как можно добиться последовательной работы двух макросов?
Сортировка по нескольким столбцам в VBA
 
Здравствуйте, никак не могу понять логику сортировки в VBA. Предположим нужно отсортировать таблицу по трем столбцам: сначала по "D", потом по "B" и в конце по "A"
Пробую такой макрос:
Код
Sub Sortirovka()
Range("A4:E12").Sort Key1:=Range("D4"), Order1:=xlAscending, Key2:=Range("B4"), Order2:=xlAscending, Key3:=Range("A4"), Order3:=xlAscending, Header:=xlYes
End Sub
Но он сортирует только по столбцу "D" (заданному первым)

Если переделать вот так:
Код
Sub Sortirovka()
Range("A4:E12").Sort Key1:=Range("D4"), Order1:=xlAscending, Header:=xlYes
Range("A4:E12").Sort Key1:=Range("B4"), Order1:=xlAscending, Header:=xlYes
Range("A4:E12").Sort Key1:=Range("A4"), Order1:=xlAscending, Header:=xlYes
End Sub
То сортирует правильно
Но хотелось бы понять как сортировать первым методом. Ведь не зря там есть KEY1, KEY2 и Order1, Order2 и т.д. Но почему не работает не понимаю... На всякий случай пример приложил
Поправить формулу расчета минимальной даты по условию, если часть значений пустая
 
Здравствуйте, Имеется таблица с датами. На соседний лист переносится сводная наименований в которой формулой
Код
=ЕСЛИ(МИН(ЕСЛИ((Col_1=A2);Col_2;""))=0;"";МИН(ЕСЛИ((Col_1=A2);Col_2;"")))
ищется минимальная дата по наименованию. Проблема в том, что если часть дат одного наименования пустая, то эта формула выводит пустоту, а нужно указать минимальную дату, по сути игнорирую пустые ячейки в таком случае. Подробнее в файле-примере. Помогите, пожалуйста, поправить формулу
Преобразование пользовательской функции в макрос
 
Здравствуйте, часто пользуюсь полезной пользовательской функцией для преобразования некоторых специфичных символов в "-" (это нужно для возможности присвоения имен файлам из ячеек):
Код
Function Replace_symbols(ByVal txt As String) As String
    st$ = "~!@/\#$%^&*|`"""
    For i% = 1 To Len(st$)
        txt = Replace(txt, Mid(st$, i, 1), "-")
    Next
    Replace_symbols = txt
End Function
Но появилась необходимость обойтись в файле без пользовательских функций. Подскажите, как преобразовать эту функцию в макрос для ячейки S1, то есть чтобы при запуске макроса, содержимое ячейки S1 преобразовывалось в соответствии с этой пользовательской функцией?
Найти первую строку с текстом
 
Здравствуйте, есть таблица в которой нужно найти номер первой строки с "яблоками" в диапазоне ячеек D21:D157. Вроде все просто и одной строчкой можно найти этот номер строки:
Код
Sub Find()
MsgBox Range("D21:D157").Find("*яблок*").Row
End Sub
Но столкнулся с проблемой: в ячейке D20 содержится заголовок, в котором тоже встречается сочетание "яблок" и из-за этого, если в 21-ой строке и еще где-то содержится "*яблок*", то макрос выводит не строку 21, которую по идее должен вывести, а следующую строку с "яблок" (27 строка в примере). Если "яблоки" оставить только в ячейке D21, то строка будет определена верно как 21. Тут дело явно в том, что строка 20 тоже содержит "яблок". При этом по определенным причинам нельзя поменять критерии поиска, например, на "яблоки", и заголовок не поменять, нужно оставить как есть. Подскажите, почему если в строках 20, 21 и любой другой строки из заданного диапазона содержится "яблок", то вместо 21-ой строки выводится следующая? Ведь по идее задан конкретный диапазон ячеек где искать. И строка 20 не должна влиять на поиск
Активировать ячейки на листе, не заходя на сам лист
 
Здравствуйте, есть код, в котором работа преимущественно ведется на одном листе № 1, но нужно преобразовать на другом листе № 2 в определенном диапазоне, формулы в значения. Получилось это сделать таким образом:
Код
Worksheets(2).Activate
  Range("A1:E14").Calculate
  Range("A1:E28").Activate
     Dim smallrng As Range
     For Each smallrng In Selection.Areas
     smallrng.Value = smallrng.Value
     Next smallrng
  Range("A2").Select
  ActiveWindow.ScrollRow = 1
Worksheets(1).Activate
Пытался сделать сначала так, чтобы не активировать лист № 2, обратившись ко второму листу через With Worksheets(2), но проблема в том, что нужно сделать Range("A1:E28").Activate, а диапазон на неактивном листе не активируется. То есть нужно что-то типа:
Код
    With Worksheets(2)
     .Range("A1:E28").Activate
...
    End With.
Но  .Range("A1:E28").Activate в цикле With выдает ошибку. Первый код работает, но получаются не нужные "прыжки" с листа на лист. Можно ли как-то преобразовать код так, чтобы сделать Activate на листе 2, не заходя на лист 2?  
Изменено: Валерий Анисомов - 16.09.2024 13:46:46
Добавить второй лист в новую книгу
 
Здравствуйте, есть макрос, который разбивает один файл на несколько других по элементам фильтра из столбца "T". Он выводит в текущую папку к основному файлу созданные новые файлы. Потребовалось добавить в каждый из этих новых файлов еще один лист, который уже содержится в исходной книге, сохранив его имя. Но никак не соображу как это сделать:

Код
Sub Разбить_по_файлам_ИЗМ()    
Dim oDic As Object, oFSO As Object    
Dim arrData(), arrSeparateItems()    
Dim TempWb As Workbook    
Dim sFolderPath As String, sFullFileName As String    
Dim LastRow As Long, i As Long, n As Long    
Dim RngData As Range, FilteredRng As Range        
If MsgBox("Разбить по файлам?", vbQuestion + vbYesNo, "Вопрос") = vbNo Then Exit Sub        
sFolderPath = ThisWorkbook.Path & "\" 'здесь укажите путь для сохранения файлов      
Application.ScreenUpdating = False       
Set oFSO = CreateObject("Scripting.FileSystemObject")    
Set oDic = CreateObject("Scripting.Dictionary")       
Dim shSource As Worksheet    
Set shSource = ActiveSheet       
Dim Application_Calculation As XlCalculation    
Application_Calculation = Application.Calculation   
Application.Calculation = xlCalculationManual       
With shSource              
If .FilterMode = True Then .ShowAllData        
LastRow = .Cells(.Rows.Count, 12).End(xlUp).Row        
arrData = .Range("T1:T" & LastRow).Value 'столбец, где нужно найти уникальные значения        
Set RngData = .Range("A1").CurrentRegion    
End With       
For i = 21 To UBound(arrData)        
If Not oDic.Exists(arrData(i, 1)) Then oDic.Add arrData(i, 1), 0&    
Next i       
arrSeparateItems() = oDic.Keys       
For n = LBound(arrSeparateItems) To UBound(arrSeparateItems)        
shSource.Copy

 



ХОТЕЛОСЬ БЫ СЮДА СКОПИРОВАТЬ ЕЩЕ ЛИСТ "Новый лист", КОТОРЫЙ СОДЕРЖИТСЯ В ИСХОДНОЙ КНИГЕ      






Set TempWb = ActiveWorkbook 
...ОПРЕДЕЛЕННЫЕ ДЕЙСТВИЯ С ЛИСТОМ, СКОПИРОВАННЫМ В ТЕКУЩУЮ КНИГУ... 
ActiveSheet.name = arrSeparateItems(n)         
sFullFileName = sFolderPath & arrSeparateItems(n) & ".xlsx"        
If oFSO.FileExists(sFullFileName) Then oFSO.Deletefile (sFullFileName)        
TempWb.SaveAs sFullFileName, FileFormat:=xlOpenXMLWorkbook 'XLSX        
TempWb.Close SaveChanges:=False    
Next n       
With ActiveSheet        
If .FilterMode = True Then .ShowAllData    
End With      
Application.Calculation = Application_Calculation    
Application.ScreenUpdating = True    
MsgBox "Файлы сохранены в " & sFolderPath, vbInformation, "Конец"
End Sub

Выделил в коде место, где текущий лист копируется в новую книгу. Хотелось бы туда же вставить еще и лист с названием "Новый лист", содержащийся в исходной книге.
То есть по смыслу что-то вроде:

Код
Sheets(Array(Новый лист", ТЕКУЩИЙ ЛИСТ ЗАДАННЫЙ СЕЙЧАС КАК ShSourse)).Copy
Надеюсь смысл передал и пример файл-пример тут вроде не нужен. Подскажите, как тут добавить этот лист?
Изменено: Валерий Анисомов - 13.09.2024 16:47:25
Сплюсовать ячейки через VBA по условию формулой
 
Здравствуйте, казалось, что вопрос должен быть распространённым, но готового решения не удалось найти. Хотелось бы через VBA в одну ячейку (в примере это "B2") сплюсовать ячейки столбца "B" по условию "заголовок" в столбце "C". Но сложность в том, что сделать это нужно формулой, то есть, чтобы в ячейке "B2" после запуска макроса получилось "=B4+B9+B13" для приложенного примера
Сохранять максимально похожее форматирование (высота, ширина строк) в готовом макросе
 
Здравствуйте, появилась необходимость разбивки одного файла по определенному столбцу по фильтру - в файле-примере это столбец "Т"  на несколько файлов (получается столько файлов, сколько значений в фильтре). Удалось найти макрос, который почти решает поставленную задачу. Проблема в том, что нужно полностью сохранить форматирование, как будто в исходном файле просто включили фильтр, удалив лишнее. Найденный макрос вроде форматирование в целом оставляет, но он сбивает высоту строк, их исходную ширину, масштаб. В результате, полученные файлы сильно отличаются от оригинала, их нужно долго подгонять. Как понимаю в кусок кода:
Код
        Set TempWb = Workbooks.Add
        With TempWb.Worksheets(1)
            FilteredRng.Copy .Range("A1")
        End With
Нужно как-то вставить что-то вроде Selection.PasteSpecial xlPasteColumnWidths, но не понимаю как это можно сделать.
Возможно ли поменять код, чтобы высоты, ширины строк, масштаб были как у исходного файла, то есть чтобы они были максимально похожими?
Разделение блоков данных вставкой перед ними строк с подсчетом суммы по каждому блоку
 
Здравствуйте, есть таблица в двух столбцах (A и B) которой данные отсортированы и идут подряд друг за другом, то есть получаются блоки данных с повторяющимися наименованиями и кодами в столбцах A и B и количеством в крайнем правом столбце E. Хотелось бы макросом вставить строки перед каждым таким блоком, и чтобы в этих строках были заполнены столбцы A, B и E. Столбцы A и B содержат наименование и код, одинаковые для каждого блока, а в столбце E считается сумма значений блока формулой СУММ
Проверка входят ли все выделенные ячейки в диапазон строк
 
Здравствуйте, подскажите, как можно макросом проверить входят ли все выделенные ячейки в диапазон строк с 6 по 35 (выделены желтым в примере)?
Если выделена только одна ячейка, то даже я могу написать код:
Код
If Selection.Row < 6 Or Selection.Row > 35 Then
MsgBox "Хотя бы одна ячейка ВНЕ диапазона строк 6..35"
Else
MsgBox "Выделенные ячейки ВНУТРИ диапазона строк 6..35"
End If
End Sub
Проблема в том, что ячеек или строк перед запуском макроса может быть выделено несколько, это могут быть как ячейки выделенные с зажатой клавишой Ctrl, так и выбранные просто протягиванием мышкой. Нужно, чтобы все выделенные перед запуском макроса ячейки входили в выделенный в диапазон строк с 6 по 35
 
Удаление строк путем перемещения данных, Помогите исправить код
 
Здравствуйте, есть таблица в которую нужно добавлять и удалять строки, но так как она связана ссылками с другими таблицами, то пытаюсь сделать это макросами сдвигая данные (копирование-вставка). Вчера, не без помощи форума, удалось сделать макрос для "добавления строк", который копирует данные под выделенными строками и специальной вставкой переносит их на строку ниже, очищая текущую строку. После выделения нескольких ячеек в разных строках мышкой, запускается кнопкой макрос и после каждой ячейки происходил "перенос строки", то есть по факту работает примерно как инструмент добавления строки в Excel, но ссылки при этом не сбиваются:
Код
Sub Add_Rows()
Dim r As Range
Dim yr As Long
t = Selection.Row
For Each r In Selection.Rows
yr = r.Row
   Range("D" & yr & ":U31").Copy
   Range("D" & yr + 1).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
  Range("D" & yr & ":U" & yr).ClearContents
Next r
Range("D" & t).Select
End Sub
Но нужно еще "удалять" выделенные, перед запуском макроса мышью строки. То есть очищать строку и поднимать данные снизу на место этой строки. Немного переделал код для "добавления" строк, получилось:
Код
Sub Delete_Rows()
Dim r As Range
Dim yr As Long
t = Selection.Row
For Each r In Selection.Rows
yr = r.Row
   Range("D" & yr + 1 & ":U31").Copy
   Range("D" & yr).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Next r
Range("D" & t).Select
End Sub
Но этот код работает как нужно только для одной строки. Если выделить несколько ячеек, например, 3 выделенные желтым в столбце D, то корректно "удаляется" только верхняя строка, в двух других удаляются не те строки (должны "удалиться" строки с числами 9, 16, 23). Нужно, вероятно, этот код проводить с каким-то сдвигом, то есть после каждой итерации поднимать скопированные данные выше на одну позицию. Но как это реализовать не могу сообразить. Подскажите, пожалуйста, как поправить нижний макрос, чтобы удалялись данные в нужных строках
Изменено: Sanja - 23.08.2024 09:08:43
Помогите откорректировать макрос, Добавление строк путем перемещения существующих ниже
 
Здравствуйте, появилась необходимость добавлять данные в таблицу, но чтобы не менялись ссылки в других связанных таблицах, делать это посредством VBA. Сделал макрос, который копирует данные под выделенной строкой и специальной вставкой переносит их на строку ниже, очищая текущую строку. Идея в том, чтобы выделить несколько ячеек в разных строках мышкой, запустить макрос и после каждой ячейки происходил "перенос строки". Получился такой код:
Код
Sub Макросстроки()
For Each r In Selection.Rows
r = Selection.Row
With Rows(r)
   Range("D" & r & ":U" & 29).Copy
   Range("D" & r + 1).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
   Range("D" & r & ":U" & r).ClearContents
End With
Next r
End Sub
Проблема в том, что "строки добавляются" корректно только если выделить перед запуском макроса ячейку или ячейки в одной строке или в нескольких строках подряд. А если выбрать несколько ячеек не подряд в строках, а например, через одну, то "добавляются строки" подряд, начиная с верхней выделенной. То есть если выделить, например, ячейки в 3 и 5 строках, и запустить макрос, то 2 пустых строки добавятся после третьей строки. Подскажите, пожалуйста, как поправить код, чтобы "строки добавлялись" в таком случае после 3 и 5 сроки?
Вставка новых строк смещением данных, Вставлять данные в диапазон без добавления строки, смещая данные вниз макросом
 
Добрый день, есть таблица, в которой данные с одного листа ссылаются на другой. При этом на этот первый лист нужно добавлять строки. Если добавить их через добавление строки, то ссылки на второй странице "съедут". Поэтому хотелось бы добавлять эти строки смещая данные определенного промежутка столбцов в таблице вниз макросом (по сути копировать данные и вставлять их вниз). В идеале хотелось бы иметь возможность по аналогии с обычной вставкой строк, иметь возможность "вставить" таким образом нескольких строк одновременно. То есть, если выделить например 3 ячейки, то "добавлялось" бы 3 строки под ними. Наверное описано довольно сложно, но в примере надеюсь получилось наглядней
Убрать вывод единицы на основе пользовательской функции, Поправить код пользовательской функции
 
Добрый день, появилась необходимость объединить в одной ячейке уникальные значения из выделенного диапазона с выбором разделителя. В интернете нашлась почти идеально подходящая под задачу пользовательская функция:

Код
Function ConcatUniq(xRg As Range, xChar As String) As String
    Dim xCell As Range
    Dim xDic As Object
    Set xDic = CreateObject("Scripting.Dictionary")
    For Each xCell In xRg
        xDic(xCell.Value) = Empty
    Next
    ConcatUniq = Join$(xDic.Keys, xChar)
    Set xDic = Nothing
End Function


Но есть проблема: объединяются по факту числа меньше единицы, но в диапазоне встречается единица (она может быть в начале, в середине, в конце диапазона, может содержаться несколько раз или ни разу).
Можно ли поправить код самой пользовательской функции ConcatUniq, чтобы игнорировалась (не выводилась) единица во всех этих вариациях, как в приложенном примере?
Выделить в отдельном столбце последнюю группу одинаковых значений перед определенным наименованием
 
Добрый день. В приложенном файле-примере хотелось бы выделить последнюю группу одинаковых фруктов из столбца A перед наименованием "Количество" в столбце B. То есть, чтобы получилось как в столбце C с помощью формулы
Автоподбор высоты строк, но не меньше определенной высоты, Поправить код, чтобы после автоматического подбора высоты строк, высота строки была не менее 30 пикселей
 
Добрый день!
Подскажите, сейчас есть макрос, который выделяет строки с 33 до конца таблицы и автоматически подбирает высоту строки по содержимому:

Код
 Range("A33", Cells(Rows.Count, 7).End(xlUp)).Select
  Selection.Rows.AutoFit


Проблема в том, что некоторые строки получаются слишком узкими. Можно ли поправить код, чтобы после автовыравнивания высоты строк, минимальная высота строки была 30 пикселей?
Выводить часть формулы значением через макрос, Поправить код, чтобы часть формулы стала значением
 
Добрый день! Появилась необходимость, чтобы в таблице в некоторых ячейках данные были прописаны в виде формул. С помощью приемов по Excel  написал простенький макрос, который выводит формулой в ячейках G2, G3 произведение количества из столбца F на Хар-ку 2 (Хар-ка 2 считается, используя ВПР из таблицы с именем "расценки", находящуюся на соседнем листе). Хотелось бы, чтобы часть формулы с ВПР выводилась сразу значением.
Понимаю, что получилось довольно запутано, надеюсь в приложенном файле с примером все станет сразу понятно

То есть проще говоря в коде:
Скрытый текст
нужно, чтобы часть "=ОКРУГЛ(F" & i & "*ВПР(C" & i & ";расценки;3;ЛОЖЬ) возвращала сразу значение, а не эту формулу, то есть чтобы в коде макроса было что-то вроде "=ОКРУГЛ(F" & i & "*ВПР(C" & i & ";расценки;3;ЛОЖЬ).VALUE. Тут просто не знаю как этот аналог VALUE прописать в коде
Макрос для очистки ячеек по условию, Очистить данные в определенных столбцах для строк по условию
 
Добрый день! В таблице, начиная с 36 строки в столбцах от I до O включительно содержаться данные, которые нужно очистить, если в столбце P наименование "материал". Хотелось бы очистить их макросом, так как условие - именно пустые ячейки без формул. В примере, данные которые нужно очистить, выделены красным цветом
Поиск на соседнем листе суммы чисел по определенному названию, Помогите "модернизировать" существующий макрос
 
Добрый день! Ранее, не без помощи форума сделал макрос, который по имени листа и определенному названию, ищет первые 3 непустых значения справа от названия на этом, находящимся в этой же книге листе, и выводит их в таблицу. Проблема в том, что существующий макрос ищет эти значения только для первого сверху вхождения названия на соответствующем листе. Теперь столкнулся с тем, что это название на листе может встречаться несколько раз и в таком случае нужно искать суммы первых трех значений. Постарался все подробно расписать в примере. В нем же находится существующий макрос, который хотелось бы модернизировать
Копирование данных из браузера (не IE) в Excel
 
Подскажите, возможно ли макросом скопировать содержимое запущенного активного окна браузера (Хром или Файерфокс) в ячейку Excel? В браузере в этот момент отображается одна текстовая строка. Конечно, вроде бы напрашивается сделать это через встроенное в Excel получение данных из интернета, но там проблема в том, что на сайте мудреная авторизация  
Действие подобное СУММЕСЛИ, только для критериев, расположенных горизонтально
 
Добрый день! Вроде задача простая, но никак не могу придумать. Помогите составить аналог формулы СУММЕСЛИ для горизонтального расположения критериев. Думаю в примере все понятно. В зависимости от значения "шапки" таблицы (в примере это название цвета), нужно вычислить сумму чисел, входящих в соответствующие столбцы (столбцов с одинаковым критерием может быть несколько)
Аналог всплывающего меню "число сохранено как текст" макросом
 
Добрый день! Подскажите, пожалуйста: в макросах совсем не силен. Есть таблица, часть чисел в которой отображается как текст. В Excel  при выборе такого диапазона в левом верхнем углу появляется желтый ромб с восклицательным знаком, при нажатии на котором всплывает меню: "Число сохранено как текст" и далее можно выбрать пункт "Преобразовать в число". Макрокордер такую последовательность действий никак не воспринимает. Если в макросе "подсветить" диапазон Range ("..."&"..."), как можно произвести замену аналогичную той, что можно сделать в Excel (на всякий случай приложил картинку)
Изменено: Валерий Анисомов - 31.08.2018 17:57:02
Поиск на соседнем листе числа или текста по определенному значению
 
Добрый день! Помогите, пожалуйста, подкорректировать формулу. В свое время встала задача поиска значений с другого листа по номеру этого листа. Сделал тогда формулу: с помощью формул ИНДЕКС и ДВССЫЛКА по номеру листа на нем искалось значение из одного фиксированного столбца и выводилось значение из другого фиксированного же столбца. Теперь данные на листах поменялись таким образом, что столбы перестали быть фиксированными, и теперь искомый текст может располагаться в диапазоне столбцов, а значения которые нужно вернуть находятся справа от искомого текста на некотором нефиксированнном расстоянии (первое число или текст справа от него). Помогите, пожалуйста, переделать формулу, чтобы поиск производился не в определенных столбцах, а в диапазоне. По этому тексту, конечно, сложно понять, но в примере постарался все расписать
Сослаться на ссылку текущего листа, ссылающуюся в свою очередь на другой лист, применение функции "СМЕЩ" в непростом случае
 
Добрый день! Есть книга с двумя листами. На втором листе содержится столбец с числами. На первом есть ссылка на число из вышеупомянутого столбца второго листа. Вопрос: как ссылаясь на ссылку (прошу прощения за тавтологию) можно на первом листе в столбце справа от ссылки вывести число, которое находится на втором листе на 2 строки выше? Есть простая функция "СМЕЩ", но проблема в том, что число находится на втором листе, а сослаться нужно именно на ту ссылку, что на первом. Возможно ли прописать такую формулу с помощью встроенных в excel формул без макросов? Понимаю, что звучит все запутанно, попытался вопрос понятней изложить в примере. Заранее благодарю за помощь
Поиск текста в текущей книге excel, макрос
 
Добрый день!
Возник вопрос по VBA. Имеется довольно большой макрос.
В начале идет кусок кода который выполняется в любом случае. Назовем его "Безусловный код". Далее в зависимости от условия: если в документе  хотя бы единожды содержится определенное словосочетание, например "ОПРЕДЕЛЕННОЕ СЛОВОСОЧЕТАНИЕ" (можно искать после выполнения "Безусловного кода"), то необходимо выполнить другой кусок кода, назовем его "Код выполняемый по условию". Если текст документа не содержит сочетания "ОПРЕДЕЛЕННОЕ СЛОВОСОЧЕТАНИЕ", то этот "Код выполняемый по условию" выполнять не нужно (как будто этого "Кода выполняемого по условию" и нет).
Что-то типа блок-схемы из воспоминаний о школьном курсе информатики  :)   :

Код
[Безусловный код];
If {Текст документа содержит сочетание "ОПРЕДЕЛЕННОЕ СЛОВОСОЧЕТАНИЕ"} then  [Код выполняемый по условию]
Else {Конец} 
Прошу помочь прописать это условие в VBA
Макрос для формулы "текст содержит"
 
Здравствуйте, уважаемые знатоки! Хотелось бы с помощью макроса решить такую задачу: имеется столбец (в примере это столбец B). В нем содержатся различные текстовые значения и может встречаться определенное слово / словосочетание (в примере это "КОДОВОЕ СЛОВО"). Хотелось бы чтобы происходила проверка диапазона ячеек столбца 1 (от B3 до конца таблицы) и в случае если текст ячейки диапазона столбца 1 содержит "КОДОВОЕ СЛОВО", то в соответствующую ячейку последнего столбца таблицы (в примере это столбик G) вставлялось значение из предпоследнего столбца (F в примере). Формулой легко это сделал, она в примере стоит, а вот в макросах не силен. Думаю тут будет буквально несколько строчек
СУММЕСЛИ с критерием больше определенного значения указанного в ячейке
 
Добрый день! Вопрос такой: как в формуле СУММЕСЛИ указать в качестве критерия значение превышающее число или дату указанную в определенной ячейке. В примере например: =СУММЕСЛИ(A2:A20;">08.02.2014";B2:B20). Такая формула считается. Но если дата 08.02.2014 постоянно меняется и указана в ячейке A22? Если прописать =СУММЕСЛИ(A2:A20;>A22;B2:B20), то ничего не считает. Подскажите синтаксис как описать такой критерий или, возможно, существует другая формула. Вроде условие простое, а придумать ничего не могу :(
Страницы: 1 2 След.
Наверх