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

Страницы: 1 2 След.
Добавление символов к числу, Добавление первых 3-х букв из ячейки одного диапазона к числу в другой диапозон
 
Изменил код и все заработало
Код
Dim Rng As Range, maxValue As Long  
Set Rng = Range("B3:B20000")
maxValue = Application.WorksheetFunction.Max(Rng)

Dim iLastRow As Long
iLastRow = Cells(Rows.Count, 2).End(xlUp).Row
   
Dim arr As Variant
arr = Range("B1:B" & iLastRow).Value
Dim iCurRow As Long, curValue As Long
For iCurRow = 1 To UBound(arr, 1)
    If Not IsEmpty(arr(iCurRow, 1)) Then
        Dim strValue As String
        strValue = CStr(arr(iCurRow, 1))
        If Len(strValue) > 4 Then 
            
            Dim numberPart As String
            numberPart = Mid(strValue, 5)
            If IsNumeric(numberPart) Then
                curValue = CLng(numberPart)
                If maxValue < curValue Then maxValue = curValue
            End If
        ElseIf IsNumeric(strValue) Then 
            curValue = CLng(strValue)
            If maxValue < curValue Then maxValue = curValue
        End If
    End If
Next
   
Cells(iLastRow + 1, 2) = Left(Cells(iLastRow + 1, 3), 3) & Format(maxValue + 1, "_000000")
Максимальное значение в ячейках с текстом и числами, Поиск максимального значения в столбце, где ячейки с текстом и числами с помощью макроса
 
Нужен код позволяющий найти максимальное значение среди ячеек с текстом и числами. Например в столбце следующие данные;
АВС_ 00015
Тмн_ 00023
КВл_ 00009

В данной ситуации ячейка с Тмн_ 00023 имеет максимальное значение. Как найти максимальное число в данном случае кодом VBA?
Добавление символов к числу, Добавление первых 3-х букв из ячейки одного диапазона к числу в другой диапозон
 
Цитата
написал:
Dim Rng As Range, maxValue As Long
   
   Set Rng = Range("B3:B20000")
   maxValue = Application.WorksheetFunction.Max(Rng)

   Dim iLastRow As Long
   iLastRow = Cells(Rows.Count, 2).End(xlUp).Row
   
   Dim arr As Variant
   arr = Range("B1:B" & iLastRow).Value
   Dim iCurRow As Long, curValue As Long
   For iCurRow = Rng.Row To UBound(arr, 1)
       If Not IsEmpty(arr(iCurRow, 1)) Then
           curValue = Mid(arr(iCurRow, 1), IIf(Len(arr(iCurRow, 1)) > 3, 5, 1))
           If maxValue < curValue Then maxValue = curValue
       End If
   Next
   
   Cells(iLastRow + 1, 2) = Left(Cells(iLastRow + 1, 3), 3) & Format(maxValue + 1, "_000000")
Макрос работал, все было нормально. Но вот через неделю он перестал работать и присылает ошибку "type mismatch"
Копирование данных из открытой книги с разными названиями, Копирование данных из открытой книги в постоянную книгу в определенный лист, в выделенную ячейку
 
Цитата
написал:
М-да..
я нахожу последнюю строку в колонке 3. Какая разница в моем случае в колонке 2 находить или в 3? При любом раскладе если в колонке 1 формулы на 500 строк то данные в остальные колонки могут только наполняться начина с 501 строки
Вот макрос. Все работает когда в 1 колонке нет формулы. Если можете помочь то помогите с макросом который вставляет в первую пустую строку данные из предыдущей.
Код
Sub Наполнение_данными()
    Dim shMarsh As Worksheet: Set shMarsh = GetSheet("Данные"): If shMarsh Is Nothing Then Exit Sub
    Dim shCatal1 As Worksheet: Set shCatal1 = GetSheet("ЗАКАЗЫ"): If shCatal1 Is Nothing Then Exit Sub
    
    Application.ScreenUpdating = False
     
    With shCatal1
     
    Dim yc As Long
            yc = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
            .Cells(yc, 3).Value = shMarsh.Range("A3").Value
            '.Cells(yc, 4).Value = shMarsh.Range("B3").Value
            '.Cells(yc, 5).Value = shMarsh.Range("C3").Value
            '.Cells(yc, 6).Value = shMarsh.Range("D3").Value
            '.Cells(yc, 7).Value = shMarsh.Range("E3").Value
            '.Cells(yc, 8).Value = shMarsh.Range("F3").Value
            '.Cells(yc, 9).Value = shMarsh.Range("G3").Value
            '.Cells(yc, 10).Value = shMarsh.Range("H3").Value
            '.Cells(yc, 11).Value = shMarsh.Range("I3").Value
            
            
            End With
                              
    
End Sub

Изменено: val_kaz - 26.01.2025 18:45:14
Копирование данных из открытой книги с разными названиями, Копирование данных из открытой книги в постоянную книгу в определенный лист, в выделенную ячейку
 
Цитата
написал:
val_kaz , Кто вам мешает определить последнюю ячейку в другой колонке (B), например так:
Что мне дает определение последней ячейки в колонке B? Она мне вообще не нужна)  
Изменено: val_kaz - 24.01.2025 15:49:21
Копирование данных из открытой книги с разными названиями, Копирование данных из открытой книги в постоянную книгу в определенный лист, в выделенную ячейку
 
Цитата
написал:
val_kaz , Кто вам мешает определить последнюю ячейку в другой колонке (B), например так:Код        Dim yc      As Long
       yc = .Cells(.Rows.Count, 2).End(xlUp).Row + 1или так:Код        Dim yc      As Long
       yc = .Columns("B").Find(what:="*", _
               LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, MatchCase:=False, SearchFormat:=False).Row + 1По мимо копи - паст надо ещё вникать в код, если вы заинтересованы в этом. Если конечно-же вам удобнее при каждом чихе бегать на форум то другое дело и по другому будут к вам относится.
У меня написан макрос который добавляет в свободные ячейки с 3 по 11 колонку. Но он не добавляет потому что в колонке 1 на все 500 строк есть формула. Если удалить формулы из 1-й колонки то с 3 по 11 колонку данные заполняются как надо.  Есть решение о том как переносить все данные из последней ячейки  1-й колонки в пустую ячейку этой колонки? Ваш код тут вообще не причем. У меня и так определяет последнюю ячейку нужных колонок и вносит все отлично если бы не заполненный ячейки именно формулой в 1-й колонке  
Изменено: val_kaz - 24.01.2025 15:46:42
Копирование данных из открытой книги с разными названиями, Копирование данных из открытой книги в постоянную книгу в определенный лист, в выделенную ячейку
 
Цитата
написал:
Sub Из_МАРШРУТА_с_любовью()
   Dim shMarsh As Worksheet: Set shMarsh = GetSheet("МАРШРУТ"): If shMarsh Is Nothing Then Exit Sub
   Dim shCatal As Worksheet: Set shCatal = GetSheet("КАТАЛОГ"): If shCatal Is Nothing Then Exit Sub
   
   With shCatal
       If WorksheetFunction.CountIfs(.Columns(1), shMarsh.Range("A5").Value) = 0 Then
           Dim arr As Variant
           arr = myTranspose(shMarsh.Range("H11:H125"))
           
           Dim yc As Long
           yc = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
           .Cells(yc, 1).Value = shMarsh.Range("A5").Value
           .Cells(yc, 2).Resize(1, UBound(arr, 2)).Value = arr
Ак как такой макрос осуществить но из открытой книги в закрытую? Вот пытаюсь даже с двумя активными книгами сделать, но данные почему то переносит на 501 строку, хотя в макросе прописано в первую свободную. Из книги "Ввод данных" с листа "Данные" в книгу "Тест" лист "ЗАКАЗЫ". И это происходит из за того что в первом столбце формула в ячейках
Изменено: val_kaz - 24.01.2025 02:38:01
Добавление символов к числу, Добавление первых 3-х букв из ячейки одного диапазона к числу в другой диапозон
 
Цитата
написал:
Как-то так, но это не точно.
Не совсем вы меня поняли. Максимальное число так и проверятся в диапазоне Range("B3:B20000") , но номер надо чтобы присваивался в пустой ячейке колонки 2 только после изменения данных в 6 колонке той же строки
Изменено: val_kaz - 16.01.2025 19:14:02
Добавление символов к числу, Добавление первых 3-х букв из ячейки одного диапазона к числу в другой диапозон
 
Цитата
написал:
Данные организованы плохо. Вы целые числа превращаете в текст, потом для нахождения максимального значения превращаете в целые числа, потом снова превращаете в текст.
Спасибо! Работает. А как добавить в мой макрос ваш макрос , но в ваш макрос добавить чтобы номер присваивался только при внесении данных в пустую строку колонки 6?
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Rng As Range: Set Rng = [A1:V20000]
    If Not Intersect(Rng, Target) Is Nothing Then
    Application.ScreenUpdating = False

     Worksheets("ЗАКАЗЫ").Sort.SortFields.Clear
     Worksheets("ЗАКАЗЫ").Sort.SortFields.Add Key:=Range("A2:A20000") _
        , SortOn:=xlSortOnValues, Order:=xlAscending, CustomOrder:= _
        "отгружено,упаковано,в работе,в ожидании,заказ,аутсорс,подготовка ТС", DataOption:=xlSortNormal
     Worksheets("ЗАКАЗЫ").Sort.SortFields.Add Key:=Range("R2:R20000") _
        , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        
    With Worksheets("ЗАКАЗЫ").Sort
        .SetRange Range("A1:BC20000")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    End If
    
    
    
End Sub
Добавление символов к числу, Добавление первых 3-х букв из ячейки одного диапазона к числу в другой диапозон
 
Цитата
написал:
Не нажимайте повторно    ну или так:КодCells(iLastRow + 1, 2) = Left(Cells(iLastRow + 1, 3), 3) & Format(Mid(Cells(iLastRow, 2).Value, IIf(Len(Cells(iLastRow, 2).Value) > 3, 5, 1)) + 1, "_000000")
Все работает вот только максимальное значение в столбце 2 не вычисляет. Он к просто к последнему прибавляет 1. А требуется к максимальному значению столбца 2 прибавлять 1
Добавление символов к числу, Добавление первых 3-х букв из ячейки одного диапазона к числу в другой диапозон
 
Цитата
написал:
Private Sub Worksheet_Change(ByVal Target As Range)
   If Intersect(Target, ActiveSheet.UsedRange.Columns(3)) Is Nothing Then Exit Sub
   
   Dim cl As Range, iprev As Long
   For Each cl In Intersect(Target, ActiveSheet.UsedRange.Columns(3)).Cells
       If IsEmpty(cl.Cells(1, 0).Value) Then
           iprev = 0
           On Error Resume Next
           iprev = CLng(Right(cl.Cells(0, 0).Value, 6))
           On Error GoTo 0
           cl.Cells(1, 0).Value = Left(cl.Value, 3) & Format(iprev + 1, "_000000")
       End If
   Next
End Sub
У меня подставляются буквы из колонки 7. Значит там где 3 я заменяю на 7?
iprev = CLng(Right(cl.Cells(0, 0).Value, 6)) Что означает 6?
Если быть еще точнее. Мне нужно присвоение букв и номера которые всегда максимум +1 в диапазоне B:B. И это действие происходит когда в той же строке колонки 7 есть текст или когда его туда вносят. Если там пусто то ничего не должно происходить
Добавление символов к числу, Добавление первых 3-х букв из ячейки одного диапазона к числу в другой диапозон
 
Цитата
написал:
Private Sub Worksheet_Change(ByVal Target As Range)
Если уже есть  с таким названием макрос? Просто добавить к нему код который вы написали?
Добавление символов к числу, Добавление первых 3-х букв из ячейки одного диапазона к числу в другой диапозон
 
Цитата
написал:
Cells(iLastRow + 1, 2) = Left(Cells(iLastRow + 1, 3), 3) & Format(Mid(Cells(iLastRow, 2).Value, IIf(Len(Cells(iLastRow, 2).Value) > 3, 5, 1)) + 1, "_000000")
Все получилось! Единственное что в первой ячейке мне пришлось указать цифру 1. Далее уже отлично! Спасибо!
А как добавить в макрос сортировки который у меня уже есть, этот макрос. чтобы число с цифрами генерировалось когда справа от него появляются данные. Ну чтобы не по нажатию кнопки все происходило, а при заполнении
Изменено: val_kaz - 23.12.2024 16:46:08
Добавление символов к числу, Добавление первых 3-х букв из ячейки одного диапазона к числу в другой диапозон
 
Цитата
написал:
Cells(iLastRow + 1, 2) = Left(Cells(iLastRow + 1, 3), 3) & Format(Mid(Cells(iLastRow, 2).Value, IIf(Len(Cells(iLastRow, 2).Value) > 3, 4, 1)) + 1, "_000000")
При повторном нажатии привязанной кнопки к макросу, появляется ошибка " type mismatch"
Добавление символов к числу, Добавление первых 3-х букв из ячейки одного диапазона к числу в другой диапозон
 
Цитата
написал:
Cells(iLastRow + 1, 2) = Left(Cells(iLastRow + 1, 3), 3) & Mid(Cells(iLastRow, 2).Value, IIf(Len(Cells(iLastRow, 2).Value) > 3, 4, 1)) + 1
Это работает правильно. Как вот теперь добавить нижнее подчеркивание между буквами и цифрами?  
Изменено: val_kaz - 23.12.2024 15:58:07
Добавление символов к числу, Добавление первых 3-х букв из ячейки одного диапазона к числу в другой диапозон
 
Цитата
написал:
КодCells(iLastRow + 1, 2) = Left(Cells(iLastRow + 1, 7), 3) & "_" & Format(maxValue + 1, "000000")
При тако раскладе номер не меняется. Все время 000001
И я ошибся. Этот код не работает. Он не меняет число
Код
Cells(iLastRow + 1, 2) = Left(Cells(iLastRow + 1, 7), 3) & "_" & maxValue + 1
Изменено: val_kaz - 23.12.2024 15:50:42
Добавление символов к числу, Добавление первых 3-х букв из ячейки одного диапазона к числу в другой диапозон
 
Цитата
написал:
Cells(iLastRow + 1, 2) = Left(Cells(iLastRow + 1, 3), 3) & Mid(Cells(iLastRow, 2).Value, IIf(Len(Cells(iLastRow, 2).Value) > 3, 4, 1)) + 1
Спасибо! Я  сделал вот так в последней строке макроса и получилось тоже самое. В результате АБВ_1. А как сделать чтобы получалось АБВ_00001?
Код
Cells(iLastRow + 1, 2) = Left(Cells(iLastRow + 1, 7), 3) & "_" & maxValue + 1

Добавление символов к числу, Добавление первых 3-х букв из ячейки одного диапазона к числу в другой диапозон
 
Есть макрос который генерирует новое число в диапазоне и вставляет в пустую ячейку
Код
 Set Rng = Range("B3:B20000")
 maxValue = Application.WorksheetFunction.Max(Rng)
 
Dim iLastRow As Long
iLastRow = Cells(Rows.Count, 2).End(xlUp).Row
Cells(iLastRow + 1, 2) = maxValue + 1
Требуется из соседней ячейки в который текст подставить перед генерируемым числом первые 3 буквы текста из ячейки той же строки
Изменено: val_kaz - 23.12.2024 14:13:40
Макрос по условию, Выполнение и запрет на выполнение макроса
 
Hugo,
Вставил ваш. Из другого диапазона дает копировать и присылает ошибку "400"
Макрос по условию, Выполнение и запрет на выполнение макроса
 
Михаил,
Попробовал ваш макрос. Ничего не происходит. И присылает ошибку "400"
Макрос по условию, Выполнение и запрет на выполнение макроса
 
Михаил,
Вставил в свой макрос вот это
Код
Dim cell As RangeDim found As Boolean
For Each cell In Selection    If Not Intersect(cell, Sheets("МАРШРУТ").Range("B3:B" & Rows.Count)) Is Nothing Then
' Если ячейка в диапазоне, продолжаем выполнение
 Else
MsgBox "Ошибка: Выделенная область должна быть в диапазоне B3:B."
Exit Sub
End If
Next cell
Код
Sub Трудоемкость()
Application.ScreenUpdating = False
Dim cell As Range
Dim found As Boolean
For Each cell In Selection
If Not Intersect(cell, Sheets("МАРШРУТ").Range("B3:B" & Rows.Count)) Is Nothing Then
' Если ячейка в диапазоне, продолжаем выполнение
Else
MsgBox "Ошибка: Выделенная область должна быть в диапазоне."
Exit Sub
End If
Next cell
Selection.Copy
Sheets("МАРШРУТ").Range("A7").PasteSpecial
With ActiveCell.EntireRow
 .Cells(1, 22).Value = WorksheetFunction.Sum(Sheets("МАРШРУТ").Range("G10:G14")) * Sheets("МАРШРУТ").Range("A5") / 60
 End With
 Application.ScreenUpdating = True
End Sub

В результате ничего не происходит и присылает ошибку "400"
Изменено: val_kaz - 01.10.2024 16:03:24
Макрос по условию, Выполнение и запрет на выполнение макроса
 
Hugo,
Ваш макрос
Код
Sub tt()Dim r As Range
Set r = Intersect(Selection, Range("B3:B" & Rows.Count))
f Not r Is Nothing Then r.Select
End Sub
как мне вставить в мой макрос который я написал выше?
Изменено: val_kaz - 01.10.2024 15:59:48
Макрос по условию, Выполнение и запрет на выполнение макроса
 
Мистер Экселистор,
Вот макрос полностью
Код
Sub Трудоемкость()
Application.ScreenUpdating = False
If Selection.Address <> "$B3:$B20000" Then Exit Sub
Selection.Copy
Sheets("МАРШРУТ").Range("A7").PasteSpecial
With ActiveCell.EntireRow

            .Cells(1, 22).Value = WorksheetFunction.Sum(Sheets("МАРШРУТ").Range("G10:G14")) * Sheets("МАРШРУТ").Range("A5") / 60
            .Cells(1, 23).Value = WorksheetFunction.Sum(Sheets("МАРШРУТ").Range("G16:G24")) * Sheets("МАРШРУТ").Range("A5") / 60
            .Cells(1, 24).Value = WorksheetFunction.Sum(Sheets("МАРШРУТ").Range("G26:G40")) * Sheets("МАРШРУТ").Range("A5") / 60
            .Cells(1, 25).Value = WorksheetFunction.Sum(Sheets("МАРШРУТ").Range("G42:G50")) * Sheets("МАРШРУТ").Range("A5") / 60
            .Cells(1, 26).Value = WorksheetFunction.Sum(Sheets("МАРШРУТ").Range("G52:G59")) * Sheets("МАРШРУТ").Range("A5") / 60
            .Cells(1, 27).Value = WorksheetFunction.Sum(Sheets("МАРШРУТ").Range("G61:G79")) * Sheets("МАРШРУТ").Range("A5") / 60
            .Cells(1, 28).Value = WorksheetFunction.Sum(Sheets("МАРШРУТ").Range("G81:G113")) * Sheets("МАРШРУТ").Range("A5") / 60
            .Cells(1, 29).Value = WorksheetFunction.Sum(Sheets("МАРШРУТ").Range("G115:G116")) * Sheets("МАРШРУТ").Range("A5") / 60
            .Cells(1, 30).Value = WorksheetFunction.Sum(Sheets("МАРШРУТ").Range("G118:G119")) * Sheets("МАРШРУТ").Range("A5") / 60
            
            End With
            End Sub

мне нужно чтобы только из диапазона B3:B можно было копировать выделенную ячейку. Если ошибочно выделена ячейка из другого диапазона, надо чтобы макрос не работал. на данный момент макрос не работает. Не копирует выделенную ячейку, хоть и нужном B3:B  
Изменено: val_kaz - 01.10.2024 16:00:43
Макрос по условию, Выполнение и запрет на выполнение макроса
 
MadNike,

Подставляю эту строку и макрос не выполняется. Т оесть выделенная область даже в нужном диапазоне не копируется
Макрос по условию, Выполнение и запрет на выполнение макроса
 
Есть макрос
Код
Sub Трудоемкость()

Application.ScreenUpdating = False

Selection.Copy
Sheets("МАРШРУТ").Range("A7").PasteSpecial

With ActiveCell.EntireRow
            .Cells(1, 23).Value = WorksheetFunction.Sum(Sheets("МАРШРУТ").Range("G16:G22")) * Sheets("МАРШРУТ").Range("A5") / 60
            
            End With
            
            End Sub
Как поставить запрет на выполнение этого макроса если:
1. Выделенная область не лежит в диапазоне B3:B
2. Если в определенной ячейке есть к примеру сообщение "проверить каталог!"  
Изменено: val_kaz - 01.10.2024 16:00:16
Имя папки в ячейку Excel
 
Цитата
написал:
val_kaz , На примере макроса  Ёк-Мок ,  без проверок, что вышестоящая папка естьКодSub Макрос1()
z = ThisWorkbook.Path
q = split(z,"\")
Cells(23, 2).Value = q(ubound(q))
Cells(24, 2).Value = q(ubound(q)-1)
End Sub
Как заставить работать макрос при открытии файла?
Поиск значений из второй строки объединенной ячейки, Поиск значений строкой ниже
 
Цитата
написал:
Чтобы найти значение, которое находится на одну строку ниже найденной строки, используйте такую формулу:=ИНДЕКС(H:H;ПОИСКПОЗ(A2;G:G;0) + 1)Если вам нужно искать данные ниже на несколько строк, вы можете заменить +1 на необходимое количество строк (например, +2 для следующей строки и т.д.)
А чтобы найти значение в следующем столбце от искомого?
Поиск значений из второй строки объединенной ячейки, Поиск значений строкой ниже
 
Цитата
написал:
Чтобы найти значение, которое находится на одну строку ниже найденной строки, используйте такую формулу:=ИНДЕКС(H:H;ПОИСКПОЗ(A2;G:G;0) + 1)Если вам нужно искать данные ниже на несколько строк, вы можете заменить +1 на необходимое количество строк (например, +2 для следующей строки и т.д.)
Спасибо большое! Ломал голову и не догадался))
Поиск значений из второй строки объединенной ячейки, Поиск значений строкой ниже
 
Есть объединенная ячейка из двух строк с названием. Как написать формулу поиска данных из второй строки. Значение из первых строк нахожу через индекс. Как вот находить данные под значениями которые уже нашел, используя одно и тоже искомое название. Пример =ИНДЕКС(H:H;ПОИСКПОЗ(A2;G:G;0))
Как найти данные которые будут в  строках ниже чем в строке с названием в ячейке А2
Изменено: Sanja - 09.09.2024 03:51:15
Вставка данных в объединённые ячейки, Вставка данных в свободные объединённые ячейки нескольких строк
 
Есть код который позволяет мне вставлять данные в первые пустые ячейки одной строки из другой книги.

yc = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
           .Cells(yc, 1).Value = shMarsh.Range("C3").Value
           .Cells(yc, 2).Value = shMarsh.Range("C5").Value

А как сделать так чтобы он вставлял в первую ячейку свободную которая объединена из нескольких. Один раз он это делает в самом начале а дальше не хочет
Страницы: 1 2 След.
Наверх