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

Страницы: 1 2 3 4 5 6 След.
Перенос данных с одного листа на другой по определенному сценарию, Перенос данных с одного листа на другой по определенному сценарию
 
Anri_amar, вариант .Если ввести не дату - строка не переносится
Код
Private Sub Worksheet_Change(ByVal Target As Range)
With Sheets("На участке")
    If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, [e:e]) Is Nothing And IsDate(Target.Value) Then 
        .Rows(Target.Row).Copy Sheets("Отгружены").Rows(WorksheetFunction.CountA(Sheets("Отгружены").[a:a]) + 1)
        .Rows(Target.Row).Delete
    End If
End With
End Sub
Изменено: casag - 20.04.2020 17:50:17
Найти по значению ячейки строку в диапазоне и очистить содержимое диапазона этой строки
 
Молодое_Поколение, вариант
Код
Sub csg()
Dim FoundCell As Range, txt As Variant, FAdr As String
txt = Range("B17").Value
Set FoundCell = Range("G:G").Find(txt, , xlValues, xlWhole)
    If Not FoundCell Is Nothing Then
       Do
         Range(Cells(FoundCell.Row, 7), Cells(FoundCell.Row, 19)).ClearContents
        'Range(Cells(FoundCell.Row, 7), Cells(FoundCell.Row, 19)).Delete Shift:=xlUp 'если нужно удалить со сдвигом вверх
         Set FoundCell = Range("G:G").FindNext
        Loop While Not FoundCell Is Nothing
    End If
End Sub
Копирование диапазона без выделения листа
 
molodoePokolenie, так только значения
Код
Sub мкр3()
  With Worksheets("Лист2")
    Range("J9:J" & Cells(Rows.Count, "J").End(xlUp).Row).Copy
    .Cells(1, 1).PasteSpecial Paste:=xlPasteValues
  End With
End Sub
Изменено: casag - 07.04.2020 20:39:56
Представить количество по каждому структурному подразделению в соответствующих городах
 
Kate_G, Добрый день. Не понял откуда брать данные для столбца " Банк/Филиалы"? Куда считать "СПО"? Или это и есть " Банк/Филиалы"?
Решение макросом без столбца  " Банк/Филиалы"  и "СПО". Запускать с листа "отчет_присутствие"
Код
Sub csg()
Dim tt As Integer
Dim i As Long, j As Long, n As Long
Dim sh As Worksheet
 Application.ScreenUpdating = False
 Application.Calculation = xlCalculationManual
 Set sh = Sheets("исходные_данные (2)")
 For i = 3 To 7
    For j = 3 To Cells(Rows.Count, 1).End(xlUp).Row
        For n = 2 To sh.Cells(Rows.Count, 1).End(xlUp).Row
            If Cells(j, i) = "" Then
                If Cells(j, 1) = sh.Cells(n, 3) And Cells(2, i) = sh.Cells(n, 8) Then tt = tt + 1
            End If
        Next
          Cells(j, i) = tt
          tt = 0
     Next
 Next
 Application.ScreenUpdating = True
 Application.Calculation = xlCalculationAutomatic '
End Sub
Изменено: casag - 07.03.2020 01:07:39
Объединенить / СЦЕПИТЬ ячееки в умной таблице, macro, vba
 
Alex D, В   коде макроса есть и вариант  без колонки End
Изменено: casag - 01.03.2020 16:10:10
Объединенить / СЦЕПИТЬ ячееки в умной таблице, macro, vba
 
Alex D, Добрый день. Сильно не вникал. Просто подправил ваш код, чтобы работал
Если в ячейки слова, то в другой ячейки писать пусто =)
 
Код
=ЕСЛИ(ИЛИ(A1="да";A1="нет");"";C1)
Перенос активной ячейки после выполнения макроса
 
Pengo,
Код
Sub Macros()
  ActiveCell = "Текст"
  ActiveCell.Offset(1).Select
  End Sub
Перенос строк с одного листа на другой по условию
 
OlegE, Добрый день. Можно так
Код
Sub ПереносСтрок()
Dim r As Range, lr As Long
lr = Cells(Rows.Count, 15).End(xlUp).Row
For Each r In Range(Cells(3, 15), Cells(lr, 15))
  If r = "Назначена встреча" Then
    Rows(r.Row).Copy Sheets("Результат").Cells(Rows.Count, 1).End(xlUp).Offset(1)
    Rows(r.Row).Delete
  End If
Next
End Sub
Макрос для добавления пустых строк между строками с данными и дублирования в них содержимого
 
Konstanta, Добрый день. В макросе из поста 3 измените в строке
Код
For i = lr To 2 Step -1 
двойку на нужное вам число.Если укажите 3 , то макрос будет обрабатывать диапазон от последней занятой строки до третьей.
Изменено: casag - 18.02.2020 11:11:07
Выбрать данные с другого листа по датам и рациону
 
Elena 777,  Попробуйте макросом. В файле в ячейке " А1" выпадающий список. Макрос запускается смайликом в ячейке "С1"
Размножить таблицу на строки другой таблицы
 
neqkeet, универсальный макрос. Таблицы могут находится на любых листах, в любом месте. Результат также выводится на любой лист. Диапазон таблицы указывать без шапки (неизвестно сколько строк  может занимать  шапка). Макрос можно запускать с любого листа.
Код
Sub csg()
Dim myRange1 As Range, myRange2 As Range, myRange3 As Range
 Dim Ws1 As Worksheet, Ws2 As Worksheet, Ws3 As Worksheet
Dim iCell As Range, mCell As Range
Dim i1&, i2&, c1&, c2&, j1&, j2&, n1&, n2&, k1&, k2&
On Error GoTo Inform
 Set myRange1 = Application.InputBox("Укажите первый диапазон:", "Выбор", Type:=8)
 Set Ws1 = myRange1.Worksheet
  i1 = myRange1.Row:  i2 = myRange1(myRange1.Count).Row
  c1 = myRange1.Column: c2 = myRange1(myRange1.Count).Column
 Set myRange2 = Application.InputBox("Укажите второй диапазон:", "Выбор", Type:=8)
 Set Ws2 = myRange2.Worksheet
  j1 = myRange2.Row:  j2 = myRange2(myRange2.Count).Row
  n1 = myRange2.Column:  n2 = myRange2(myRange2.Count).Column
 Set myRange3 = Application.InputBox("Укажите ячейку для вставки:", "Выбор", Type:=8)
 Set Ws3 = myRange3.Worksheet
  k1 = myRange3.Row:  k2 = myRange3.Column
 For Each iCell In Ws1.Range(Ws1.Cells(i1, c1), Ws1.Cells(i2, c1))
        For Each mCell In Ws2.Range(Ws2.Cells(j1, n1), Ws2.Cells(j2, n1))
            If iCell <> "" Then
                Ws1.Range(Ws1.Cells(iCell.Row, c1), Ws1.Cells(iCell.Row, c2)).Copy Ws3.Cells(k1, k2)
                Ws2.Range(Ws2.Cells(mCell.Row, n1), Ws2.Cells(mCell.Row, n2)).Copy Ws3.Cells(k1, k2).Offset(0, c2 - c1 + 1)
                k1 = k1 + 1
            End If
        Next
    Next
    Ws3.Activate
    Exit Sub
Inform:
MsgBox "Диалог закрыт или нажата кнопка " _
& Chr(34) & "Отмена" & Chr(34) & "!"
Exit Sub
End Sub
Очистка содержимого строк ниже заданной ячейки, макрос
 
SamuelW, так?
Код
Private Sub Paste()
Range("A1").Select
Rows(ActiveCell.Row).Offset(1).Resize(30).ClearContents
Range("A1").Select
ActiveSheet.Paste
 End Sub
Изменено: casag - 11.11.2019 19:59:10
Удаление дубликатов строк по двум значениям в двух столбцах
 
LDS, если строго по примеру то, так
Код
Sub csg()
Dim iCell As Range, mCell As Range
Application.ScreenUpdating = False
    For Each iCell In Range(Cells(2, "A"), Cells(Rows.Count, "A").End(xlUp))
        For Each mCell In Range(Cells(2, "E"), Cells(Rows.Count, "E").End(xlUp))
            If iCell <> "" Then
                If iCell = mCell And iCell.Offset(0, 4) = mCell.Offset(0, -4) Then
                    Rows(mCell.Row).Delete
                End If
            End If
        Next
    Next
Application.ScreenUpdating = True
End Sub
Вставка n- количества строк после найденного значения
 
nikita49, можно так.
Код
Set fcell = Columns("A:A").Find(1510)
Rows(fcell.Row).Offset(1).Resize(n).Insert ' n- количество вставляемых строк
Размножить таблицу на строки другой таблицы
 
neqkeet, вариант
Код
Sub csg()
Dim iCell As Range, mCell As Range, FreeRow As Long, lr As Long
Application.ScreenUpdating = False
lr = Cells(Rows.Count, 11).End(xlUp).Row
If lr < 3 Then lr = 3
Range("K3:P" & lr).ClearContents
FreeRow = 3
    For Each iCell In Range(Cells(3, "A"), Cells(Rows.Count, "A").End(xlUp))
        For Each mCell In Range(Cells(3, "E"), Cells(Rows.Count, "E").End(xlUp))
            If iCell <> "" Then
                Range(Cells(iCell.Row, 1), Cells(iCell.Row, 2)).Copy Cells(FreeRow, 11)
                Range(Cells(mCell.Row, 5), Cells(mCell.Row, 8).Copy Cells(FreeRow, 13)
                FreeRow = FreeRow + 1
            End If
        Next
    Next
Application.ScreenUpdating = True
End Sub
Выделение из пофамильного списка значения в алфавитном порядке по двум условиям
 
grand68, Добрый день!  Попробуйте решение макросом.
Подсчёт процедурных единиц за определённый период времени
 
samass,Добрый день!

Макрос не привязан жестко к листу, просто выгрузка данных пойдет на тот лист, с которого вы его запустите. А не срабатывает макрос на листе " Единицы", потому что названия отделений на листе у вас " Отд 01", а на листе "Октябрь" просто "1". Я писал об этом выше. Названия отделений должны быть написаны как угодно, но везде однообразно.
Почему не работает на 2003, пока не знаю. Проверить не на чем. Опишите в чем сбой, что не работает.
Кстати, вчера я перезалил файл, в старом файле был отладочный файл , если еще не скачали
Подсчёт процедурных единиц за определённый период времени
 
samass, в макросе "Процедуры" считается сумма чисел в ячейках по каждому отделению.Если нужно просто количество заполненных ячеек по отделениям ,то тогда так
Код
Sub ПроцедурыЯчейки()
Dim tt As Integer
Dim i As Long, j As Long, n As Long
Dim Rng As Range, x As Range
Static Txt As String
  Set Rng = Range("A1:U1")
  Txt = InputBox("Введите месяц", "Поиск в строке '1'", Txt)
  If Txt = "" Then Exit Sub
  Set x = Rng.Find(what:=Txt)
    With Sheets(Txt)
      For i = 2 To 12
        For j = 2 To 25
          If Cells(i, 1) = Sheets(Txt).Cells(j, 10) Then
             For n = 11 To 41
                If Sheets(Txt).Cells(j, n) <> 0 Then tt = tt + 1
             Next
            End If
         Next
            If tt <> 0 Then
            Cells(i, x.Column) = tt
            tt = 0
          End If
      Next
    End With
End Sub
Подсчёт процедурных единиц за определённый период времени
 
samass, Если, правильно понял задачу, то макрос для "Пациенты"(запускать с листа " Пациенты")
Код
Sub Пациенты()
Dim tt As Integer
Dim i As Long, j As Long
Dim Rng As Range, x As Range
Static Txt As String
  Set Rng = Range("A1:U1")
  Txt = InputBox("Введите месяц", "Поиск в строке '1'", Txt)
  If Txt = "" Then Exit Sub
  Set x = Rng.Find(what:=Txt)
  For i = 2 To 12
     For j = 2 To 25
        If Cells(i, 1) = Sheets(Txt).Cells(j, 10) Then tt = tt + 1
     Next
          If tt <> 0 Then
          Cells(i, x.Column) = tt
          tt = 0
       End If
   Next
End Sub

Для "Процедуры"   (запускать с листа " Процедуры")
Код
Sub Процедуры()
Dim tt As Single
Dim i As Long, j As Long
Dim Rng As Range, x As Range
Static Txt As String
  Set Rng = Range("A1:U1")
  Txt = InputBox("Введите месяц", "Поиск в строке '1'", Txt)
  If Txt = "" Then Exit Sub
  Set x = Rng.Find(what:=Txt)
    With Sheets(Txt)
      For i = 2 To 12
        For j = 2 To 25
          If Cells(i, 1) = Sheets(Txt).Cells(j, 10) Then tt = tt + Application.Sum(.Range(.Cells(j, 11), .Cells(j, 41)))
        Next
            If tt <> 0 Then
            Cells(i, x.Column) = tt
            tt = 0
          End If
      Next
    End With
End Sub

Важно: отделения на всех листах должно быть написано однообразно.
Перезалил файл
Изменено: casag - 09.11.2019 01:07:01
Как совместить данные из нескольких листов в один
 
Цитата
LAV75 написал:
Если я правильно понял
Да, вы верно поняли.
Автозаполнение ячеек в Excel из другой таблицы данных
 
7up82, Могу предложить решение макросом, но только после

Цитата
vikttur написал:
Нужно, чтобы Вы ознакомились с правилами форума и изменили логин
Макрос: Разбить таблицу по страницам и добавить строку с формулой, Макрос: Разбить таблицу по страницам и добавить строку с формулой
 
lost05,  можно так
Код
Sub csg()
Dim myName
Dim iCell As Range
Dim ws1 As Worksheet
Dim ws As Worksheet
Set ws1 = Sheet1
  For Each iCell In Range(Cells(2, "E"), Cells(Rows.Count, "E").End(xlUp))
    myName = iCell
    On Error Resume Next
    If Sheets(myName) Is Nothing Then
        Sheets.Add(After:=Sheets(Sheets.Count)).Name = myName
        Set ws = ActiveSheet
        ws.Cells(1, 1) = myName
        Range(ws1.Cells(1, 1), ws1.Cells(1, 5)).Copy ws.Cells(2, 1)
        Range(ws1.Cells(iCell.Row, 1), ws1.Cells(iCell.Row, 5)).Copy ws.Cells(Rows.Count, 1).End(xlUp).Offset(1)
    Else
        Range(ws1.Cells(iCell.Row, 1), ws1.Cells(iCell.Row, 5)).Copy Sheets(myName).Cells(Rows.Count, 1).End(xlUp).Offset(1)
    End If
  Next
End Sub
Как совместить данные из нескольких листов в один
 
LAV75, замените
Код
Range(.Cells(4, 1), .Cells(13, 7)).Copy Cells(RW, 1)
на
Код
Range(.Cells(4, 1), .Cells(13, 7)).Copy
Cells(RW, 1).PasteSpecial Paste:=xlPasteValues
Макросы. Скрыть столбцы по заданному условию. Скрыть строки по заданному условию., 2 макроса.
 
presentt, Попробуйте так.Должно быть быстрее.
Код
Sub СкрытьСтроки()
Application.ScreenUpdating = False
 Dim c As Range, LRow As Long, a As Variant, iCell As Range
LRow = Cells(Rows.Count, 1).End(xlUp).Row
For Each c In Range(Cells(3, 122), Cells(LRow, 122))
  If c = 0 Then
      a = c.Offset(0, -119).Value
      Set iCell = Range(Cells(2, 3), Cells(LRow, 3)).Find(a)
      Rows(iCell.Row).Resize(4).EntireRow.Hidden = True
   End If
Next
Application.ScreenUpdating = True
End Sub
Изменено: casag - 25.10.2019 17:48:04
Макросы. Скрыть столбцы по заданному условию. Скрыть строки по заданному условию., 2 макроса.
 
Добрый день. Не обратил внимания, что нужно скрывать блоками. Тогда так
Изменено: casag - 25.10.2019 12:59:03
Макросы. Скрыть столбцы по заданному условию. Скрыть строки по заданному условию., 2 макроса.
 
presentt, Можно так
Код
Sub Скрыть_Строки()
 Application.ScreenUpdating = False
 Dim c As Range, LRow As Long
 LRow = Cells(Rows.Count, 1).End(xlUp).Row
    For Each c In Range(Cells(3, 22), Cells(LRow, 22))
      If c = 0 Then
        c.EntireRow.Hidden = True
      End If
    Next
 Application.ScreenUpdating = True
End Sub

Sub Скрыть_Столбцы()
 Application.ScreenUpdating = False
 Dim c As Range, lCol As Long
 lCol = Cells(1, Columns.Count).End(xlToLeft).Column
    For Each c In Range(Cells(1, 5), Cells(1, lCol))
      If c = 0 Then
        c.EntireColumn.Hidden = True
      End If
    Next
 Application.ScreenUpdating = True
End Sub
Изменено: casag - 24.10.2019 20:20:35
Объединение данных до пустой строки
 
abdulov.777, Можно так
Код
Sub Макрос1()
Dim lr As Long, i As Long
lr = Cells(Rows.Count, "B").End(xlUp).Row
For i = lr To 2 Step -1
  If Cells(i, 2) = "" Then
    Cells(i - 1, 1) = Cells(i - 1, 1) & Cells(i, 1)
    Rows(i).Delete
  End If
Next
End Sub
Доработать vba excel макрос по поиску и присвоению значения
 
inews, Можно так. Надеюсь разберетесь.
VBA. Сортировка столбцов таблиц по списку
 
Ливиан, Добрый день . Возможно это вам поможет
Страницы: 1 2 3 4 5 6 След.
Наверх