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

Страницы: 1 2 3 След.
Как убрать отступ внутри ListBox?
 
Для начала стоит почитать правила форма и предоставить некий макет, чтоб было хоть какое-то понимание.

Вашу картинку вы можете распечатать и оставить себе.

Спасибо.
Нужна помощь? Пиши в ЛС, всегда помогу чем смогу за Волшебную Балтику 3
( ´ ∀ `)ノ~ ♡
Ограничение по количеству заявок с премией за продажи, Ограничение по количеству заявок с премией за продажи
 
Добрый вечер.

Попробуйте формулу, если я верно понял Ваш запрос
Код
=СУММ(ЕСЛИ(СТРОКА(C2:C1000)<=85; 758+100; 758))+СУММ(ЕСЛИ(СТРОКА(C2:C1000)>85; 758; 0))
Изменено: Егор Чернов - 31.12.2023 02:26:52
Нужна помощь? Пиши в ЛС, всегда помогу чем смогу за Волшебную Балтику 3
( ´ ∀ `)ノ~ ♡
Google Sheets, Гугл Таблицы
 
Камрады, всем добрый вечер.

Есть вопрос:
И так, есть некий код, который выполняет выгрузку из МойСклад в таблицу, но что я заметил, что есть некие ограничения по выгрузке, либо по времени, либо кол-ву символов.

Так вот, есть ли вообще способы обойти данные ограничения?

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

В данный момент код следующий:
Код
function onOpen() {
 var ui = SpreadsheetApp.getUi();
 ui.createMenu('Мой склад')
    .addItem('Запустить скрипт', 'runScript')
    .addToUi();
}

function runScript() {
 clearCells();
 var dates = promptDates(); // Запрашиваем дату и время перед началом выполнения скрипта
 getProductInfo(dates.date, dates.time); // Передаем выбранную дату и время в функцию getProductInfo
}

function getProductInfo(date, time) {
 var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
 var lastRow = sheet.getLastRow();
 var ui = SpreadsheetApp.getUi();
 var outputColumnQuantity = 13;
 var outputColumnPrice = 19;
 var calcColumnR = 18;
 var calcColumnQ = 17;
 var outputColumnIP = 22;
 var startRow = 4;

 var start = new Date();
 var ip = getIPAddress();

 var startMessage = 'Выполнение скрипта начато. Скрипт начал выполняться с IP-адреса: ' + ip + '. Это может занять некоторое время.';
 ui.alert('Выполнение скрипта', startMessage, ui.ButtonSet.OK);

 var deletedRowsData = []; // Массив для хранения информации об удаленных строках

 for (var i = startRow; i <= lastRow; i++) {
    var searchTerm = sheet.getRange(i, 5).getValue();

    if (searchTerm !== "" && searchTerm !== null) {
      var token = 'ТУТ_ЕСТЬ_ТОКЕН';
      var headers = { 'Authorization': 'Bearer ' + token };
      var baseUrl = 'https://online.moysklad.ru/api/remap/1.2/entity/assortment';
      var url = baseUrl + '?filter=code=' + searchTerm + '&expand=stocks,salePrices';
      var response = UrlFetchApp.fetch(url, { headers: headers });
      var jsonResponse = JSON.parse(response.getContentText());

      var stock = '';
      var salePriceFree = '';
      var ip = response.getHeaders()['X-Forwarded-For'] || '';

      if (jsonResponse.rows && jsonResponse.rows.length > 0) {
        var stockValue = jsonResponse.rows[0].stock;

        if (stockValue !== null && stockValue !== undefined) {
          stock = stockValue;

          if (stockValue === 0 || stockValue <= 20) {
            deletedRowsData.push({
              code: searchTerm,
              name: jsonResponse.rows[0].name,
              quantity: stockValue,
              row: i
            });
            sheet.deleteRow(i); // Удаляем строку, если остаток равен 0 или меньше 20
            lastRow--; // Уменьшаем переменную lastRow, так как количество строк в таблице уменьшилось
            i--; // Уменьшаем переменную i, чтобы корректно перейти к следующей строке после удаления
            continue; // Пропускаем остальную часть цикла после удаления строки
          }
        } else {
          stock = '';
        }

        var salePrices = jsonResponse.rows[0].salePrices || [];
        for (var j = 0; j < salePrices.length; j++) {
          if (salePrices[j].priceType && salePrices[j].priceType.name === "Свободная") {
            salePriceFree = (salePrices[j].value / 100).toFixed(2).replace('.', ',');
            break;
          }
        }
      }

      sheet.getRange(i, outputColumnQuantity).setValue(stock);
      sheet.getRange(i, outputColumnPrice).setValue(salePriceFree);

      var price = parseFloat(salePriceFree.replace(',', '.'));
      var priceR = (price * 0.97).toFixed(2).replace('.', ',');
      var priceQ = (price * 0.93).toFixed(2).replace('.', ',');

      sheet.getRange(i, calcColumnR).setValue(priceR);
      sheet.getRange(i, calcColumnQ).setValue(priceQ);
      sheet.getRange(i, outputColumnIP).setValue(ip);

      // Вызываем функцию для выбора даты и времени для каждой строки
      sheet.getRange(i, 11).setValue(date); // Записываем выбранную дату в столбец K
      sheet.getRange(i, 12).setValue(time); // Записываем выбранное время в столбец L
    }
  }

 var rowsToDeleteCount = deletedRowsData.length;
 ui.alert('Удаление строк', 'Будет удалено строк: ' + rowsToDeleteCount, ui.ButtonSet.OK);

 if (rowsToDeleteCount > 0) {
    var csvContent = "Код | Наименование | Остаток | Номер строки\n";
    deletedRowsData.forEach(function (row) {
      csvContent += row.code + " | " + row.name + " | " + row.quantity + " | " + row.row + "\n";
    });

    var fileName = "Удаленные_строки.csv";
    var mimeType = "text/csv";
    var blob = Utilities.newBlob(csvContent, mimeType, fileName);
    var csvData = Utilities.base64Encode(blob.getBytes());
    var fileUrl = "data:" + mimeType + ";base64," + csvData;
    var fileLink = '<a href="' + fileUrl + '" download="' + fileName + '">Скачать файл</a>';
    var dialogTitle = 'Файл CSV создан';
    var htmlOutput = '<script>' +
      'function closeDialog() {' +
      '  google.script.host.close();' +
      '}' +
      '</script>' +
      fileLink +
      '<script>' +
      'document.querySelector("a").addEventListener("click", closeDialog);' +
      '</script>';

    var html = HtmlService.createHtmlOutput(htmlOutput);
    html.setWidth(300);
    html.setHeight(80);
    SpreadsheetApp.getUi().showModelessDialog(html, dialogTitle);
  } else {
    ui.alert('Удаление строк', 'Без остатка и остаток 20 и меньше не найдено строк для удаления.', ui.ButtonSet.OK);
  }

 var end = new Date();
 var executionTime = (end - start) / 1000;
 var endMessage = 'Скрипт завершен. На выполнение скрипта затрачено ' + executionTime + ' секунд.';
 ui.alert('Скрипт завершен', endMessage, ui.ButtonSet.OK);
}

function promptDates() {
 var ui = SpreadsheetApp.getUi();
 var response = ui.prompt('Введите дату (формат: ДД.ММ.ГГГГ)', ui.ButtonSet.OK_CANCEL);
 var dateInput = '';
 var timeInput = '';

 if (response.getSelectedButton() === ui.Button.OK) {
    dateInput = response.getResponseText();

    var timeResponse = ui.prompt('Введите время (формат: ДД.ММ.ГГГГ ЧЧ:ММ:СС)', ui.ButtonSet.OK_CANCEL);

    if (timeResponse.getSelectedButton() === ui.Button.OK) {
      timeInput = timeResponse.getResponseText();
    }
  }

 return {
    date: dateInput,
    time: timeInput
  };
}

function clearCells() {
 var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
 var startRow = 4;
 var endRow = sheet.getLastRow();
 var columnsToClear = [11, 12, 13, 17, 18, 19]; // K, L, M, Q, R, S

 for (var colIndex of columnsToClear) {
    var range = sheet.getRange(startRow, colIndex, endRow - startRow + 1);
    range.clearContent();
  }
}

// Функция для получения IP-адреса пользователя
function getIPAddress() {
 var ipAddress = '';
 try {
    var ipResponse = UrlFetchApp.fetch('https://api64.ipify.org?format=json');
    var json = JSON.parse(ipResponse.getContentText());
    ipAddress = json.ip || '';
  } catch (error) {
    ipAddress = '';
  }
 return ipAddress;
}

Нужна помощь? Пиши в ЛС, всегда помогу чем смогу за Волшебную Балтику 3
( ´ ∀ `)ノ~ ♡
Перенос строки из одной таблицы в другую, Перенос строки из одной таблицы в другую по нажатию кнопки
 

Цитата
написал:
Это файл созданный на скорую руку
Ну, это понятно. Я то не об этом, если вы не справились с переносом данных, то какая речь может идти о сетевом взаимодействии??

Я бы изначально попросил бы помочь с данными аспектами.

Я бы поменял часть кода вот так:
Код
If wbReestr Is Nothing Then     Set wbReestr = Workbooks.Open("C:\Users\lifan\OneDrive\Рабочий стол\reestr.xlsm") End If 

На примерно:

Код
reestrName = "reestr" '
    reestrExtension = ".xlsm" '     reestrPath = Dir(ThisWorkbook.Path & "\" & reestrName & reestrExtension)    Do While reestrPath = ""         If reestrExtension = ".xlsm" Then            reestrExtension = ".xlsx"             reestrPath = Dir(ThisWorkbook.Path & "\" & reestrName & reestrExtension)        Else             Exit Do        End If    Loop

Далее:

Код
Set shSheet1 = ThisWorkbook.Worksheets("Лист1")

На примерно:

Код
Dim headerRow As Range

    For Each targetSheet In wbReestr.Worksheets
        Set headerRow = targetSheet.Rows(1)
        If Not headerRow.Find("Название колонки1") Is Nothing And _
           Not headerRow.Find("Название колонки2") Is Nothing And _
           Not headerRow.Find("Название колонки3") Is Nothing Then
            Set shSheet1 = targetSheet
            Exit For
        End If
    Next targetSheet

Изменено: Егор Чернов - 16.12.2023 23:30:00
Нужна помощь? Пиши в ЛС, всегда помогу чем смогу за Волшебную Балтику 3
( ´ ∀ `)ノ~ ♡
Перенос строки из одной таблицы в другую, Перенос строки из одной таблицы в другую по нажатию кнопки
 
Цитата
Сергей Фенев написал:
То что нужно

А что, если в шизо-теории, файлы лежат хрен знает где? Тогда как быть?

У вас всегда статический путь к файлу?

А если нужно будет использовать ВНЕ вашего ПК, там и USERPROFIL будет другой.

Совершено не продуманный момент.

Очень много "ЕСЛИ"  
Изменено: Егор Чернов - 16.12.2023 23:09:57
Нужна помощь? Пиши в ЛС, всегда помогу чем смогу за Волшебную Балтику 3
( ´ ∀ `)ノ~ ♡
Excel сам меняет цифры при вводе на десятичный формат, как исправить в версии 2016 Excel?, Пишу 1, он сам исправляет на 0,01... не нашла в Файл - параметры где снять галочку для фиксированного десятичного формата. Может в версии 2016 года по другому надо?
 
Измените "Формат ячеек"

Если такая ситуация по всей книге и/или в любой книге, то, предоставьте файл.
Нужна помощь? Пиши в ЛС, всегда помогу чем смогу за Волшебную Балтику 3
( ´ ∀ `)ノ~ ♡
Добавление строк в таблице исходя из указанного количества строк цифрами в ячеке
 
Пардон, нашел косяк, так как я смотрел только первые 10 строк, исправил. Этот вариант должен быть корректный.  
Нужна помощь? Пиши в ЛС, всегда помогу чем смогу за Волшебную Балтику 3
( ´ ∀ `)ノ~ ♡
Добавление строк в таблице исходя из указанного количества строк цифрами в ячеке
 
Готово.

Если нужно будет доработать, пишите.
Нужна помощь? Пиши в ЛС, всегда помогу чем смогу за Волшебную Балтику 3
( ´ ∀ `)ノ~ ♡
Добавление строк в таблице исходя из указанного количества строк цифрами в ячеке
 
Я верно понимаю, что заливка ячеек вообще не требуется?  
Нужна помощь? Пиши в ЛС, всегда помогу чем смогу за Волшебную Балтику 3
( ´ ∀ `)ノ~ ♡
Добавление строк в таблице исходя из указанного количества строк цифрами в ячеке
 
Держи на здоровье.

Не обращай на них внимание, тут злые дядьки сидят, которые строят в добавок ШИЗО теории об ИИ.
Написал комментарии к коду для дальнейшей корректировки под свои нужны.  
Изменено: Егор Чернов - 16.12.2023 22:37:03
Нужна помощь? Пиши в ЛС, всегда помогу чем смогу за Волшебную Балтику 3
( ´ ∀ `)ノ~ ♡
Упорядочить столбцы по шаблону
 
dimas212, Предоставьте файл с рандомными данными, как выгружается с сайта. Далее добавьте лист и сделай его так, как он должен быть.

Если у вас есть документация и/или доступ к API сайта, тогда еще будет проше.
Нужна помощь? Пиши в ЛС, всегда помогу чем смогу за Волшебную Балтику 3
( ´ ∀ `)ノ~ ♡
Объединение ячеек по дублирующимся значениям., Объединение ячеек по повторяющимся значениям в заданных столбцах
 
Через Application.InputBox
Код
Sub dsd()
    Dim selectedColumns As Variant
    Dim col As Variant
    Dim lr As Long
    Dim i As Long
    Dim colNum As Long
    
    On Error Resume Next
    selectedColumns = Application.InputBox("Выберите столбцы для обработки (через запятую без пробелов, например, 5,7)", Type:=2)
    On Error GoTo 0
    
    If VarType(selectedColumns) = vbBoolean Then Exit Sub
    
    selectedColumns = Split(selectedColumns, ",")
    
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    
    For Each col In selectedColumns
        colNum = CLng(col)
        lr = Cells(Rows.Count, colNum).End(xlUp).Row
        
        For i = lr To 2 Step -1
            If Cells(i, colNum).Value = Cells(i - 1, colNum).Value And Not IsEmpty(Cells(i, colNum)) Then
                Range(Cells(i - 1, colNum), Cells(i, colNum)).Merge
                With Range(Cells(i - 1, colNum), Cells(i, colNum))
                    .HorizontalAlignment = xlCenter
                    .VerticalAlignment = xlCenter
                End With
            End If
        Next i
    Next col
    
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
End Sub

Нужна помощь? Пиши в ЛС, всегда помогу чем смогу за Волшебную Балтику 3
( ´ ∀ `)ノ~ ♡
Объединение ячеек по дублирующимся значениям., Объединение ячеек по повторяющимся значениям в заданных столбцах
 
Код
Sub dsd()
    Dim colArray As Variant
    Dim col As Variant
    Dim lr As Long
    Dim i As Long
    
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    
    colArray = Array(5, 7)
    
    For Each col In colArray
        lr = Cells(Rows.Count, col).End(xlUp).Row
        
        For i = lr To 2 Step -1
            If Cells(i, col).Value = Cells(i - 1, col).Value And Not IsEmpty(Cells(i, col)) Then
                Range(Cells(i - 1, col), Cells(i, col)).Merge
                With Range(Cells(i - 1, col), Cells(i, col))
                    .HorizontalAlignment = xlCenter
                    .VerticalAlignment = xlCenter
                End With
            End If
        Next i
    Next col
    
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
End Sub


Изменено: Егор Чернов - 16.12.2023 10:17:10
Нужна помощь? Пиши в ЛС, всегда помогу чем смогу за Волшебную Балтику 3
( ´ ∀ `)ノ~ ♡
Обновление элементов на пользовательской панели инструментов Ribbon
 
Sanja, причем тут ИИ?! Вечная тема споров. Постоянно забываю об этом.  
Нужна помощь? Пиши в ЛС, всегда помогу чем смогу за Волшебную Балтику 3
( ´ ∀ `)ノ~ ♡
Получить ссылку на объект по PID, который вернула функция Shell
 
Код
Sub GetExcelInstanceByPID()
    Dim vPID As Variant
    Dim xlApp As Object
    Dim processes As Object
    Dim process As Object
    
    ' Поменяйте на свой PID процесса Excel
    vPID = Shell("excel.exe /x", vbNormalFocus)
    
    Set processes = GetObject("winmgmts://./root/cimv2").ExecQuery("SELECT * FROM Win32_Process WHERE ProcessId = " & vPID)
    
    For Each process In processes
        If process.Name = "EXCEL.EXE" Then
            ' Найден процесс Excel, получаем к нему доступ
            Set xlApp = GetObject("winmgmts://./root/cimv2:Win32_Process.Handle='" & process.Handle & "'").Associators_("Win32_Process")
            
            ' Отображаем информацию о найденном экземпляре Excel
            MsgBox "Найден экземпляр Excel." & vbCrLf & _
                   "PID: " & vPID & vbCrLf & _
                   "Имя процесса: " & process.Name & vbCrLf & _
                   "Информация о процессе: " & process.ExecutablePath
                   
            ' Можно использовать xlApp для управления этим экземпляром
            ' Например: xlApp.Visible = True
            Exit For
        End If
    Next process
    
    If xlApp Is Nothing Then
        MsgBox "Не удалось найти процесс Excel с PID: " & vPID
    End If
End Sub
Нужна помощь? Пиши в ЛС, всегда помогу чем смогу за Волшебную Балтику 3
( ´ ∀ `)ノ~ ♡
Обновление элементов на пользовательской панели инструментов Ribbon
 
Через onAction конкретно для этой закладки.

Не за компом, не могу сказать точно, но гугл говорит что-то по этому типу:

Код
Sub onTabChange(control As IRibbonControl, ByRef cancelDefault)
    If control.Id = "Название_закладки" Then
        ' Например:
        ' RibbonUI.InvalidateControl "Название_кнопки" ' Обновление определенной кнопки на панели Ribbon
    End If
End Sub
Нужна помощь? Пиши в ЛС, всегда помогу чем смогу за Волшебную Балтику 3
( ´ ∀ `)ノ~ ♡
Получить ссылку на объект по PID, который вернула функция Shell
 
Код
import psutil

def get_excel_process():
    for proc in psutil.process_iter(['pid', 'name']):
        if 'excel' in proc.info['name'].lower():  # Найти процесс Excel
            return proc

# Получение процесса Excel
excel_process = get_excel_process()
if excel_process:
    print(f"Найден процесс Excel с PID {excel_process.info['pid']}")
else:
    print("Процесс Excel не найден")


Нужна помощь? Пиши в ЛС, всегда помогу чем смогу за Волшебную Балтику 3
( ´ ∀ `)ノ~ ♡
Необходимо убрать пустые ячейки в таблице, образованной формулами
 
Pinpin, Да
Нужна помощь? Пиши в ЛС, всегда помогу чем смогу за Волшебную Балтику 3
( ´ ∀ `)ノ~ ♡
глючит строка состояния ексель 2016, строка состояния не реагирует на действия
 
А в безопасном режиме аналогичная проблема?
Нужна помощь? Пиши в ЛС, всегда помогу чем смогу за Волшебную Балтику 3
( ´ ∀ `)ノ~ ♡
Добавления в АГРЕГАТ(17;3;D5:D4999;3) выбор диапазона ячеек по условию.
 
Код
=ЕСЛИ(СЧЁТЕСЛИ(C5:C4999;">50")>0; АГРЕГАТ(17; 3; D5:D4999; 3); "")
Нужна помощь? Пиши в ЛС, всегда помогу чем смогу за Волшебную Балтику 3
( ´ ∀ `)ノ~ ♡
Формулы расчёта показателей эффективности KPI
 
А можно увидеть пример?
Нужна помощь? Пиши в ЛС, всегда помогу чем смогу за Волшебную Балтику 3
( ´ ∀ `)ノ~ ♡
Ошибка выполнения надстройки
 
Да, я понял этот момент и уже исправил:)
Вот что значит невнимательность.
Благодарю за быстрый ответ
Нужна помощь? Пиши в ЛС, всегда помогу чем смогу за Волшебную Балтику 3
( ´ ∀ `)ノ~ ♡
Последовательная сцепка ячеек по условию
 
Код
Sub Photo()
    Dim lastRow As Long
    Dim i As Long, j As Long
    Dim numPhotos As Long
    Dim id As String
    Dim result As String
    Dim photoUrl As String
    
    lastRow = Cells(Rows.Count, 1).End(xlUp).Row
    
    For i = 2 To lastRow
        numPhotos = Cells(i, 2).Value
        
        id = Cells(i, 1).Value
        
        result = ""
        
        For j = 1 To numPhotos
            Dim formattedNumber As String
            formattedNumber = Format(j, "000")
            
            photoUrl = "http://URL/" & id & "/photo_" & formattedNumber & ".jpg"
            
            If result = "" Then
                result = photoUrl
            Else
                result = result & "," & photoUrl
            End If
        Next j
        
        Cells(i, 3).Value = result
    Next i
End Sub



Нужна помощь? Пиши в ЛС, всегда помогу чем смогу за Волшебную Балтику 3
( ´ ∀ `)ノ~ ♡
Ошибка выполнения надстройки
 
Добрый день.

Есть надстройка, если запускать код из файла .xlsm то все прекрасно работает и обрабатывает.
Но, если сделать надстройку и добавить меню помощью RibbonXMLEditor, то он начинает создавать листы и обрабаывать внутри себя, а не на активном открытом листе/книге.

Прошу вас подсказать, что я сделал неверно?
Код
Private Sub DeleteCol(control As IRibbonControl)
    Call MergeAndProcessData
End Sub

'Это готовый вариант 1 части выполнения
Sub MergeAndProcessData()
    Dim selectedFiles As FileDialog
    Dim fileName As Variant
    Dim mergedData() As Variant
    Dim headerRow() As Variant
    Dim totalRows As Long
    Dim currentRow As Long
    Dim ws As Worksheet
    Dim i As Long, j As Long
    Dim lastRow As Long
    Dim sumQty As Double
    Dim curBlock As String
    Dim curName As String

    Set selectedFiles = Application.FileDialog(msoFileDialogFilePicker)
    selectedFiles.AllowMultiSelect = True

    If selectedFiles.Show = -1 Then
        totalRows = 0
        Dim totalCols As Long
        For Each fileName In selectedFiles.SelectedItems
            Workbooks.Open fileName
            totalRows = totalRows + ActiveSheet.UsedRange.Rows.Count - 1
            totalCols = ActiveSheet.UsedRange.Columns.Count
            ActiveWorkbook.Close SaveChanges:=False
        Next fileName

        ReDim mergedData(1 To totalRows, 1 To totalCols)
        ReDim headerRow(1 To 1, 1 To totalCols)

        currentRow = 1

        For Each fileName In selectedFiles.SelectedItems
            Workbooks.Open fileName
            If currentRow = 1 Then
                For j = 1 To totalCols
                    headerRow(1, j) = ActiveSheet.Cells(1, j).Value
                Next j
            End If
            For i = 2 To ActiveSheet.UsedRange.Rows.Count
                If ActiveSheet.Cells(i, 16).Value <> "Отклонено" Then
                    For j = 1 To totalCols
                        mergedData(currentRow, j) = ActiveSheet.Cells(i, j).Value
                    Next j
                    currentRow = currentRow + 1
                End If
            Next i
            ActiveWorkbook.Close SaveChanges:=False
        Next fileName

        Set ws = ThisWorkbook.Worksheets.Add
        ws.Range("A1").Resize(UBound(headerRow, 1), UBound(headerRow, 2)).Value = headerRow
        ws.Range("A2").Resize(currentRow - 1, UBound(mergedData, 2)).Value = mergedData

        ws.Columns("U:R").Delete
        ws.Columns("P:P").Delete
        ws.Columns("H:C").Delete
        ws.Columns("A:A").Delete

        lastRow = ws.Cells(Rows.Count, 1).End(xlUp).Row
        For i = lastRow To 2 Step -1
            curBlock = ws.Cells(i, 3).Value
            curName = ws.Cells(i, 6).Value
            sumQty = ws.Cells(i, 9).Value
            For j = i - 1 To 1 Step -1
                If ws.Cells(j, 3).Value = curBlock And ws.Cells(j, 6).Value = curName Then
                    sumQty = sumQty + ws.Cells(j, 9).Value
                    ws.Rows(j).Delete
                    i = i - 1
                    lastRow = lastRow - 1
                End If
            Next j
            ws.Cells(i, 9).Value = sumQty
        Next i

        Dim startingColumn As Long
        startingColumn = 10 
        ws.Cells(1, startingColumn).Value = "Остаток, шт."
        ws.Cells(1, startingColumn + 1).Value = "Процент продаж"
        ws.Cells(1, startingColumn + 2).Value = "Казань"
        ws.Cells(1, startingColumn + 3).Value = "НН"
        ws.Cells(1, startingColumn + 4).Value = "Москва"
        ws.Cells(1, startingColumn + 5).Value = "Краснодар"

        Dim lastRowProcessed As Long
        lastRowProcessed = ws.Cells(Rows.Count, 1).End(xlUp).Row
        For i = lastRowProcessed To 2 Step -1
            block= ws.Cells(i, 3).Value
            count= ws.Cells(i, 9).Value
            If block= "April Cash&Carry" Then
                ws.Cells(i, 12).Value = count
            ElseIf block= "April cash&carry (Москва)" Then
                ws.Cells(i, 14).Value = count
            ElseIf block= "April Cash&Carry (Нижний Новгород)" Then
                ws.Cells(i, 13).Value = count
            ElseIf block= "Цветы Краснодара" Then
                ws.Cells(i, 15).Value = count
            End If
            For j = i - 1 To 2 Step -1
                If ws.Cells(j, 6).Value = ws.Cells(i, 6).Value Then
                    ws.Cells(j, 12).Value = ws.Cells(j, 12).Value + ws.Cells(i, 12).Value 
                    ws.Cells(j, 13).Value = ws.Cells(j, 13).Value + ws.Cells(i, 13).Value 
                    ws.Cells(j, 14).Value = ws.Cells(j, 14).Value + ws.Cells(i, 14).Value 
                    ws.Cells(j, 15).Value = ws.Cells(j, 15).Value + ws.Cells(i, 15).Value 
                    ws.Rows(i).Delete
                    Exit For
                End If
            Next j
        Next i

        For i = 2 To lastRowProcessed
            ws.Cells(i, 9).Value = ws.Cells(i, 12).Value + ws.Cells(i, 13).Value + ws.Cells(i, 14).Value + ws.Cells(i, 15).Value
        Next i

        For i = 2 To lastRowProcessed
            If IsEmpty(ws.Cells(i, 12).Value) Then ws.Cells(i, 12).Value = 0 
            If IsEmpty(ws.Cells(i, 13).Value) Then ws.Cells(i, 13).Value = 0 
            If IsEmpty(ws.Cells(i, 14).Value) Then ws.Cells(i, 14).Value = 0 
            If IsEmpty(ws.Cells(i, 15).Value) Then ws.Cells(i, 15).Value = 0 
        Next i

        ws.Columns("L").ColumnWidth = 10
        ws.Columns("M").ColumnWidth = 10
        ws.Columns("N").ColumnWidth = 10
        ws.Columns("O").ColumnWidth = 10

        ws.Columns("B:B").Cut
        ws.Columns("I:I").Insert Shift:=xlToRight

        ws.Columns("I:I").Insert Shift:=xlToRight

        ws.Cells(1, 9).Value = "Заявлено, шт."
        ws.Cells(1, 11).Value = "Остаток, шт."

        ws.Cells(1, 5).Value = "Наименование Предзаказа"
        ws.Cells(1, 8).Value = "Менеджер по закупке"
        ws.Cells(1, 10).Value = "Куплено, шт."

        ws.Cells.EntireColumn.AutoFit

        Set selectedFiles = Nothing
        Set ws = Nothing
    End If

End Sub


Нужна помощь? Пиши в ЛС, всегда помогу чем смогу за Волшебную Балтику 3
( ´ ∀ `)ノ~ ♡
Поиск контрагента по ФИО и вставка значений.
 
Всем добрый вечер.

Имеется 2 листа.
Лист1 "МС"
Лист2 "Клик"

На листе 2 в столбце A есть ФИО контрагента (далее КА)/(Формат ИП Иванов И.И.)
На листе 1 есть ФИО КА но в другом формате.(ИП Иванов Иван Иванович/ИП Иванов Иван Иванович (Нет договора)/ФЛ Иванов Иван Иванович/ ООО ИП Иванов)

Как мы видим, везде есть одинаковая переменная Иванов.
Требуется, чтоб если данная переменная с листа2 совпадает на листе 1, то значения из листа2 вставлялись в лист 1.

Критерии:
1. Совпадение Фамилии
2. Совпадение даты

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

Более детальный пример во вложении.

Благодарю всех за помощь.  
Изменено: Егор Чернов - 05.07.2023 01:58:39
Нужна помощь? Пиши в ЛС, всегда помогу чем смогу за Волшебную Балтику 3
( ´ ∀ `)ノ~ ♡
Нумерация смен
 
Попробуйте в столбец D

Код
=ЕСЛИ(И(B2>=I2; B2<=J2); G2; ЕСЛИ(И(B2<J2; B2+1<=J2); G2-1; ЕСЛИ(И(B2>J2; B2>=J2); G2+1; "")))
Изменено: Егор Чернов - 05.07.2023 01:21:31
Нужна помощь? Пиши в ЛС, всегда помогу чем смогу за Волшебную Балтику 3
( ´ ∀ `)ノ~ ♡
Потеря связей при копировании папки
 
Вероятнее всего, проблема с обновлением связей в ваших файлах.
А именно, что некоторые из них содержат абсолютные пути, в то время как другие содержат относительные пути.

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

С другой стороны, если у вас есть файлы со связями, использующими относительные пути, они могут обновиться не правильно.

В принципе логика очень проста.
Изменено: Егор Чернов - 05.07.2023 02:00:21
Нужна помощь? Пиши в ЛС, всегда помогу чем смогу за Волшебную Балтику 3
( ´ ∀ `)ノ~ ♡
При двойном клике на ячейке переход на другой лист
 
Добрый вечер.

Нашел практически ответ на свой вопрос, но есть нюансы. А что если? Как обработать вот эти если?

Вот что я придумал, но он не всегда корректно работает, так как переход идет по ФИО контрагента, но он отличается на Лист1 и Лист2
Делал по фамилии и чтоб выделял полный квадрат при условии если переходишь при нажатии с Лист1

Код:
Код
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    Dim sHt As String
    Dim strOk As Variant
    Dim ws1 As Worksheet
    Dim ws2 As Worksheet
    
    sHt = Me.Name
    
    Set ws1 = ThisWorkbook.Sheets("МС")
    Set ws2 = ThisWorkbook.Sheets("Клик")
    
    If Not Intersect(Target, ws2.UsedRange) Is Nothing Then
        Dim lastName As String
        lastName = Split(Target.Value, " ")(2) 
        
        Dim foundRange As Range
        Set foundRange = ws1.Columns(4).Find(lastName, LookIn:=xlValues, LookAt:=xlPart)
        
        If Not foundRange Is Nothing Then
            Dim amount As Double
            amount = Target.Offset(0, 2).Value
            
            Dim amountRange As Range
            Set amountRange = ws1.Columns(3).Find(amount, LookIn:=xlValues, LookAt:=xlWhole)
            
            If Not amountRange Is Nothing Then
                ws1.Cells(amountRange.Row, 1).Select
                ws1.Cells(amountRange.Row, 1).Interior.Color = RGB(192, 192, 192) 
            Else
                MsgBox "У ИП " & Target.Value & " не найдена накладная с суммой " & amount & " в МойСклад", vbInformation
            End If
        Else
            MsgBox "У ИП " & Target.Value & " не найдена накладная в МойСклад", vbInformation
        End If
    End If
End Sub

Нужна помощь? Пиши в ЛС, всегда помогу чем смогу за Волшебную Балтику 3
( ´ ∀ `)ノ~ ♡
Удаление строки в Listbox
 
Цитата
написал:
Цитата
Егор Чернов написал:
визуально, я не вижу никаких проблем
,
Браво, видно профессионала! chatGPT не помог вам, да? Видно сразу кто творит код а кто тупо копи-паст из чата. Но и там проблема. Курите мануалы. Визуально он не видит проблем... Размешили так размешили.
Боже. Скажи мне, ты реально немного с чувством юмора, или же ты ищешь до чего докопаться?
Либо ты блажен, либо у тебя мания преследования ChatGPT
Он по всюду, он везде.
Но я уже написал, у меня даже акка нет на него. Верить или нет, это дело твое.
Я челу вроде тебя, точно ничего доказывать не буду, причина выше.
Ты мне не интересен, ни как человек, ни как личность. Тьфу

Но, если ты включишь немного голову и прочитаешь раз так сотый , ты поймешь суть вопроса.
Вот рассмешил, так рассмешил. Поржали всем коллективом. Продолжай и не останавливайте. А то, нам с коллегами будет скуфно на работке работу работать.

Иди лучше молока попей, дефомин поднимется, полегчает.
И от меня отстань, а то я могу подумать, что ты из тех самых... движение которых запрошено на территории РФ. Бээ

А то смотри, я могу расценить твои действия ка домогательства, а может даже и как на почве твоих сексуальных фантазий, что уже нарушает заоны РФ об ЛГБТ, а значит и

3.1. Создавать сообщения, нарушающие действующее законодательство РФ.

Но, это так, размышление.

Хочешь построить свои домыслы о заговоре мира , в курилке есть тема про ChatGPT, вот иди туда и устраивай холивар.
Изменено: Егор Чернов - 02.04.2023 16:41:12
Нужна помощь? Пиши в ЛС, всегда помогу чем смогу за Волшебную Балтику 3
( ´ ∀ `)ノ~ ♡
Пользовательский формат для сотовых номеров, Как настроить пользовательский формат для сотовых номеров
 
Так?
Нужна помощь? Пиши в ЛС, всегда помогу чем смогу за Волшебную Балтику 3
( ´ ∀ `)ノ~ ♡
Страницы: 1 2 3 След.
Наверх