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

Страницы: 1
Перевод формллы в VBA, Помогите избавиться от формулы массива
 
Karataev, Спасибо, работает )
Перевод формллы в VBA, Помогите избавиться от формулы массива
 
Доброго дня товарищи
Нужна помощь, есть формула массива(столбец AB в примере)
{=ВПР(ЕСЛИ(ЕОШИБКА(ИНДЕКС($A$2:$A$719;НАИМЕНЬШИЙ(ЕСЛИ(ЕСЛИОШИБКА(ПОИСКПОЗ($A$2:$A$719;$A$2:$A$719;0);"")=СТРОКА($1:$718);ПОИСКПОЗ($A$2:$A$719;$A$2:$A$719;0);"");СТРОКА()-1);1));"";ИНДЕКС($A$2:$A$719;НАИМЕНЬШИЙ(ЕСЛИ(ЕСЛИОШИБКА(ПОИСКПОЗ($A$2:$A$719;$A$2:$A$719;0);"")=СТРОКА($1:$718);ПОИСКПОЗ($A$2:$A$719;$A$2:$A$719;0);"");СТРОКА()-1);1));Таблица1[[№ задачи]:[Срок исполнения2]];13;0)}

Есть ли вариант уйти от этого при помощи макроса?
суть такая.

Из столбца Уникальность3(Z) получаем значение, далее идет поиск этих значений в столбце № задачи(A)
Далее идет сопоставление дат в столбце срок исполнения2(M) и оттуда выбирается наименьшая дата и вноситься в столбец AB

Проблема в том что с вкл. автовычислением пересчет формулой занимает долгое время, поэтому расчет данной формулы хотелось бы привязать к кнопке с кодом ВБА которая результат выставляла бы значениями в столбец (AB) с привязкой по значению относительно столбца Z

С прикреплением файла к сообщению косяк, поэтому ссылка ну облоко
 yadi.sk/i/ACA_AwdntbGM5
Внедрение массива в код перебора ячеек по условию
 
Слэн, я не силен в работе с массивами, как правильно внедрить это в код?
Внедрение массива в код перебора ячеек по условию
 
Доброго всем дня. Нужна помощь в ускорение макроса
Суть следующая, при его выполнение сперва раскрываются все строки, а потом проверяется каждая ячейка в нужном столбце на наличие символа и по нему идет скрытие, но строк очень много и код на слабых машинах может выполняться по 20-30 минут. Можно ли ускорить занеся данные из столбца в массив и работать с массивом? или может есть еще какой то способ?
вот код.
Код
Public Sub Speed_on()
  Application.ScreenUpdating = False
  Application.Calculation = xlCalculationManual
  Application.EnableEvents = False
  If Workbooks.Count Then
      ActiveWorkbook.ActiveSheet.DisplayPageBreaks = False
  End If
  Application.DisplayStatusBar = False
  Application.DisplayAlerts = False
  End Sub

 Public Sub Speed_off()
  Application.ScreenUpdating = True
  Application.Calculation = xlCalculationAutomatic
  Application.EnableEvents = True
  If Workbooks.Count Then
      ActiveWorkbook.ActiveSheet.DisplayPageBreaks = True
  End If
  Application.DisplayStatusBar = True
  Application.DisplayAlerts = True
  End Sub

Sub Portal_Hide()
Speed_on
Dim cell As Range                    
For Each cell In ActiveSheet.Columns(2).Cells       
If cell.Value = "П" Then cell.EntireRow.Hidden = True      
Next
Speed_off
End Sub

Sub Portal_Show()
Speed_on
Dim cell As Range                         
For Each cell In ActiveSheet.Columns(2).Cells       
If cell.Value = "П" Then cell.EntireRow.Hidden = False      
Next
Speed_off
End Sub

Sub Sum_Hide()
Speed_on
Portal_Show
Dim cell As Range                      
For Each cell In ActiveSheet.Columns(3).Cells       
If cell.Value = "С" Then cell.EntireRow.Hidden = True      
Next
Speed_off
End Sub

Sub Sum_Show()
Speed_on
Portal_Show
Dim cell As Range
For Each cell In ActiveSheet.Columns(3).Cells
If cell.Value = "С" Then cell.EntireRow.Hidden = False
Next
Speed_off
End Sub
Макрос на копирование с проверкой
 
Hugo, вставлю потом кнопку, при нажатии в диапазоне am11:bq11 должно произвестись сравнение даты из u8 и дат из диапазона am10:bq10 и вставка под эту дату % из ячейки d14.  
У нас диспетчер должен при формировании сводки дать эту кнопку и % записывается в диапазон в 11 строке. Нужно для дальнейшего формирования диаграммы выполнения суточного плана. Я алгоритм придумывал, но с синтаксисом vba у меня пока ещё проблемы:(

Я думал так. Сперва копирование из ячейки d14, далее выбор ячейки из условия равенства даты и плюс 1 строка и вставка

Этот вариант попробовал, подходит, спасибо большое
Изменено: Fae2r - 27.04.2015 09:49:41
Макрос на копирование с проверкой
 
перезалил файл
Макрос на копирование с проверкой
 
Доброго дня, необходима ваша помощь с написанием макроса. Из ячейки D14 каждый день по нажатию кнопки должен переноситься % выполнения в строку 11, причём дата должна выставляться в ячейку находящаяся под датой соответствующая дате в ячейке U8.
Изменено: Fae2r - 27.04.2015 08:05:00
Вставка с помощью макроса в активную ячейку
 
Разобрался с форматом. Терь пытаюсь задать область в которой можно удалять и вставлять строки
Вставка с помощью макроса в активную ячейку
 
так с удалением разобрался. Теперь подскажите как задать форматирование вставляемой строки как у верхней строчки или нижней

Код
Sub add_new_line_in() 
    unprot 
    Лист1.Rows(CStr(ActiveCell.Row) + ":" + CStr(ActiveCell.Row + 1)).Insert Shift:=xlDown 
    prot 
End Sub
 
Вставка с помощью макроса в активную ячейку
 
Вообщем вчера делал делал и вот что вышло.
Удалить по активной ячейке получается, а вставить по активной ячейке нет, посмотрите пожалуйста как переделать.
Еще проблема в том что если переименовать работы и разделительную позицию то макрос потом не удаляет по активной ячейке. я хз как быть


Код
 Option Explicit
Const START_ROW As Integer = 16
Const TEMPLATE_HEAD_RANGE As String = "A10:O11"
Const TEMPLATE_POS_RANGE As String = "A13:O14"
Sub unprot()
    Ëèñò1.Unprotect Password:="123"
End Sub
Sub prot()
    Ëèñò1.Protect Password:="123", DrawingObjects:=True, Contents:=True, Scenarios:=True _
     , AllowFormattingCells:=True, AllowFormattingColumns:=True, _
     AllowFormattingRows:=True, AllowInsertingColumns:=True, AllowInsertingRows _
     :=True, AllowInsertingHyperlinks:=True, AllowDeletingColumns:=True, _
     AllowDeletingRows:=True, AllowSorting:=True, AllowFiltering:=True
End Sub
Sub main(f As Boolean)
    unprot
    If f Then
     insert_row_head get_last_row
     insert_row_pos get_last_row, f
    Else
     insert_row_pos get_last_row, f
    End If
    prot
End Sub
Function get_last_row() As Integer
    Dim i As Integer
    Dim val, val2
    i = 0
    With Ëèñò1
     val = .Cells(START_ROW + i, 5).Value
     val2 = .Cells(START_ROW + i, 1).Value
     While val2 = .Range(TEMPLATE_HEAD_RANGE)(1, 1) Or val <> ""
      i = i + 2
      val = .Cells(START_ROW + i, 5).Value
      val2 = .Cells(START_ROW + i, 1).Value
     Wend
    End With
    get_last_row = START_ROW + i
End Function
Sub insert_row_pos(row_start As Integer, a As Boolean)
    Dim last_num As Integer
    With Ëèñò1
     If a Then
      last_num = 1
     Else
      If IsNumeric(.Cells(row_start - 2, 1).Value) Then
          last_num = CInt(.Cells(row_start - 2, 1).Value) + 1
      Else
          last_num = 1
      End If
     End If
     .Rows(CStr(.Range(TEMPLATE_POS_RANGE).Row) + ":" + CStr(.Range(TEMPLATE_POS_RANGE).Row + 1)).Copy
     .Rows(row_start).Insert Shift:=xlDown
     .Cells(row_start, 1) = last_num
     .Rows(CStr(row_start) + ":" + CStr(row_start + 1)).EntireRow.Hidden = False
    End With
    Application.CutCopyMode = False
End Sub
Sub insert_row_head(row_start As Integer)
    With Ëèñò1
     .Rows(CStr(.Range(TEMPLATE_HEAD_RANGE).Row) + ":" + CStr(.Range(TEMPLATE_HEAD_RANGE).Row + 1)).Copy
     .Rows(CStr(row_start) + ":" + CStr(row_start + 1)).Select
     Selection.Insert Shift:=xlDown
     '.Insert Shift:=xlDown
     .Rows(CStr(row_start) + ":" + CStr(row_start + 1)).EntireRow.Hidden = False
    End With
    Application.CutCopyMode = False
End Sub
Sub delete_active_row()
    unprot
    If get_last_row > ActiveCell.Row And START_ROW <= ActiveCell.Row Then
    Ëèñò1.Rows(CStr(ActiveCell.Row) + ":" + CStr(ActiveCell.Row + 1)).Delete Shift:=xlUp
    End If
    prot
End Sub



экселевский файл не добавляется, попробую через облоко, а пока посмотрите код пожалуйста

файл на яндекс.диске
Изменено: Fae2r - 26.08.2014 13:31:00
Вставка с помощью макроса в активную ячейку
 
Сори вот

Файлы удалены: превышение допустимого размера вложения [МОДЕРАТОР]
Изменено: Fae2r - 25.08.2014 11:14:40
Вставка с помощью макроса в активную ячейку
 
Помогите пожалуйста. Суть проблемы. Есть график. в котором по кнопке должна добавлятся новая позиция в месте активной ячейки.
Как привязать в VBA вставку скопированых ячеек в активную ячейку с изменением форматирования. Т.к. одна из строк объеденена в несколько ячеек. При этом некоторые ячейки будут защищены и новые позиции которые добавляются так же должны быть защищены.
А второй скрипт в удалении строки состоящей из 2ух строк по положению активной ячейки.
Изменено: Fae2r - 25.08.2014 09:51:11
Страницы: 1
Наверх