fa
Feedback
Volond Apps

Volond Apps

رفتن به کانال در Telegram

Программирование для души и от лени Добро пожаловать! У нас есть отличное сообщество любителей Excel и VBA, Google Sheet и Google Apps Script, а также всех тех, кто готов работать с этим программным обеспечением. Присоединяйтесь к нам, чтобы задавать и от

نمایش بیشتر
246
مشترکین
اطلاعاتی وجود ندارد24 ساعت
اطلاعاتی وجود ندارد7 روز
اطلاعاتی وجود ندارد30 روز
آرشیو پست ها
Преобразует временной формат 12-часового часового формата в 24-часовой формат. #convert #time
 javaScript
/**
 * 
 * Этот код преобразует строку "1:41:09 PM" в "13:41:09".
 * Если входная строка не соответствует формату времени 12 часов, функция вернет null.
 * Преобразует временной формат 12-часового часового формата в 24-часовой формат.
 *
 * @param {string} [time12Hr] - Время в формате 12 часов с AM или PM (по умолчанию - текущее время).
 * @return {string|null} - Время в формате 24 часа (в виде строки) или null, если входное время некорректно. 
 * 
 */
function convertTo24HourFormat(time12Hr=new Date().toLocaleTimeString()) {
  // Разбиваем строку времени на компоненты
  const timeComponents = time12Hr.match(/(\d+):(\d+):(\d+) (AM|PM)/);

  if (timeComponents) {
    let hours = parseInt(timeComponents[1], 10);
    const minutes = timeComponents[2];
    const seconds = timeComponents[3];
    const period = timeComponents[4];

    if (period === 'PM' && hours !== 12) {
      // Если это время после полудня, добавляем 12 часов
      hours += 12;
    } else if (period === 'AM' && hours === 12) {
      // Если это полночь, устанавливаем часы в 0
      hours = 0;
    }

    // Форматируем часы, минуты и секунды
    const formattedHours = hours.toString().padStart(2, '0');
    const formattedTime = `${formattedHours}:${minutes}:${seconds}`;

    return formattedTime;
  }

  // Если ввод не соответствует формату времени 12 часов, возвращаем null
  return null;
}

Шаблон в стиле sprintf =reduce(T2;T3:T8;LAMBDA(total;row;REPLACE(total;find("%";total;1);1;row)))
Шаблон в стиле sprintf
=reduce(T2;T3:T8;LAMBDA(total;row;REPLACE(total;find("%";total;1);1;row)))

Сравнение прайсов #vba #PQ #javaScript EXCEL + PQ

#include <MsgBoxConstants.au3>
#include <FileConstants.au3>
#include <array.au3>
#include <String.au3>
#include <File.au3>

$FileOpen = "Profile34.csv";
Dim $aResult
CSVParserDotComma($FileOpen)

_ArrayDisplay($aResult)


Func CSVParserDotComma($FileOpen) ; parser
    Dim $aArray
;~     _FileReadToArray($FileOpen, $aArray);загоняем файл в одномерный массив построчно, в нулевом элементе число строк

  If Not _FileReadToArray($FileOpen, $aArray) Then;загоняем файл в одномерный массив построчно, в нулевом элементе число строк
    MsgBox(4096, "Ошибка", " Ошибка чтения файла в массив     Ошибка = " & @error)
    Exit
  EndIf

    $columnsCounter = stringsplit($aArray[1],';');  определяем эталонное количество столбцов, разделитель ';'
    Dim $aResult[1][$columnsCounter[0] +1 ];объявляем из одной строки массив с уже известным количеством столбцов
    ProgressOn("Загрузка ", "Ожидание...", "",-1,-1,16)
    ConsoleWrite('aArray0: ' & $aArray[0] & @CRLF)
    $procent = $aArray[0] / 100
        For $x = 1 to ($aArray[0]);заполняем итоговый массив, строки
        local  $oneRow = stringsplit($aArray[$x],';'); разбиваем каждую строку в имеющемся одномерном массиве
                If $oneRow[0]=$columnsCounter[0] then; если эталонное количество столбцов и текущее совпадают
                    _ArrayAdd($aResult, $aArray[$x], 1, ";") ;то добавляем всю строку в новый массив, начиная с 1го столбца, разделитель столбцов ";"
                Else
                    ;MsgBox(1,1,"ошибка в строке "&$x)
                EndIf
        ProgressSet($x / $procent, Ceiling($x / $procent) & " процентов") ; устанавливает позицию и/или текст
    Next
    ProgressSet(100, "Завершено", "Полностью выполнено")
    ProgressOff() ; убирает окно прогресса
Return $aResult
EndFunc

Горячие клавиши для 1С https://www.1c.kiev.ua/Download/hotkeys-1c.pdf #hotkeys #1C

Для sqlite есть охренительные аддоны. Там можно, например xlsx или csv как виртуальную табличку к базе цеплять, юзать регулярки в запросах и еще кучу всего. https://github.com/nalgeon/sqlean #AutoIT

Связанный код hslToHex
// Based on https://stackoverflow.com/a/44134328/1393023

var hslToHex = function (h, s, l) {
  var hue2rgb = function(p, q, t){
    if (t < 0) t += 1;
    if (t > 1) t -= 1;
    if (t < 1 / 6) return p + (q - p) * 6 * t;
    if (t < 1 / 2) return q;
    if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;
    return p;
  };
  var toHex = function(x) {
    const hex = Math.round(x * 255).toString(16);
    return hex.length === 1 ? '0' + hex : hex;
  };
  h /= 360, s /= 100, l /= 100;
  var r, g, b;
  if (s === 0) {
    r = g = b = l;
  } else {
    var q = l < 0.5 ? l * (1 + s) : l + s - l * s;
    var p = 2 * l - q;
    r = hue2rgb(p, q, h + 1 / 3);
    g = hue2rgb(p, q, h);
    b = hue2rgb(p, q, h - 1 / 3);
  }
  return '#' + [r, g, b].map(toHex).join('');
}

Этот скрипт на JavaScript для Google Таблиц предназначен для подсветки текста в активной ячейке радужными цветами. Вкратце он работает так: Получает активную в данный момент ячейку с помощью SpreadsheetApp.getActiveRange() Берет текст из этой ячейки - cell.getValue().toString() Создает объект richTextBuilder, куда будет записывать текст с разными стилями. Проходится циклом по символам текста. Для каждого символа рассчитывает радужный цвет в зависимости от позиции символа в тексте. Создает объект стиля textStyleBuilder с нужным цветом. Применяет стиль к текущему символу в объекте richTextBuilder. Проверяет, что символ - это буква латинского алфавита. В конце записывает полученный цветной текст обратно в ячейку. Таким образом, скрипт окрашивает текст в ячейке в радугу, меняя цвет каждого символа.
 javaScript
function rainbowActiveCellLat(range) {
  var cell = range||SpreadsheetApp.getActiveRange();
  var text = cell.getValue().toString();
  var B = 'A'.charCodeAt(0);
        var E = 'Z'.charCodeAt(0);
  var richTextBuilder = SpreadsheetApp.newRichTextValue();
  richTextBuilder.setText(text);
  for (var i = 0; i < text.length; i++) {
    var textStyleBuilder = SpreadsheetApp.newTextStyle();
    textStyleBuilder.setForegroundColor(
      hslToHex(((360 * i) / text.length) | 0, 100, 50)
    );
    var textStyle = textStyleBuilder.build();
    console.log(text[i]+"-"+text[i].charCodeAt(0));
    if (text[i].charCodeAt(0) >= B && text[i].charCodeAt(0) <= E){
      richTextBuilder.setTextStyle(i, i + 1, textStyle);
    }

  }
  var value = richTextBuilder.build();
  cell.setRichTextValue(value);
}

Катеринопільське_97_кв_9_вид_діл_.xlsx0.10 KB

photo content

/**
 * Copies a single row in a Google Sheets spreadsheet to the last row of the sheet.
 * Копирует  строку выделеной ячейки в таблице Google Sheets в последнюю строку листа 
 * @param {Object} range - The range object representing the row to be copied.
 * @return {void} - This function does not return a value.
 */
 function selectionCopyRow(range){
    var ss=SpreadsheetApp.getActiveSpreadsheet()
    var sheet=ss.getActiveSheet()
    var row=range.getRow()
    var rows=sheet.getRange(`${row}:${row}`)
    var lastRow=sheet.getLastRow()+1
    var copyRange=sheet.getRange(`${lastRow}:${lastRow}`)
    rows.copyTo(copyRange)
}

/**
 * Copies the selected rows by calling the `selectionCopyRow` function for each row.
 * Копирует выбранные строки, вызывая функцию selectionCopyRow для каждой строки.
 * #runSelectionAll
 * @param {type} paramName - description of parameter
 * @return {type} description of return value
 */
function selectionCopyRows(){
  runSelectionAll(selectionCopyRow)  
}

Перенос строки в числовом формате dddd d.mm.yyyy Иcпользуеться знак &lt; &gt; Также можно использовать формулу =join(char(10)
Перенос строки в числовом формате
dddd d.mm.yyyy
Иcпользуеться знак < > Также можно использовать формулу =join(char(10);split(TEXT(B1;"DDDD dd.mm.yyy");" "))

Repost from [[PRO Obsidian]]
В тему оформления - видео про блоки callouts и как их можно кастомизировать под себя.