=SORT(ДВССЫЛ("ITOG!E2:E335");ITOG!E2:E335;ЛОЖЬ)
function sortSheetByColumnE() {
sortSheetByColumn(5, false); // Сортировка по столбцу E без изменения формата
addPercentageToCells(); // Вызов функции для добавления символа процента в конец каждой ячейки диапазона E2:F999
fillEmptyWithZeroPercentage()
}
function sortSheetByColumnF() {
sortSheetByColumn(6, true); // Сортировка по столбцу F с изменением формата на проценты
addPercentageToCells(); // Вызов функции для добавления символа процента в конец каждой ячейки диапазона E2:F999
fillEmptyWithZeroPercentage()
}
// добавляем символ процента в конец каждой ячейки диапазона E2:F999
function addPercentageToCells() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var range = sheet.getRange('E2:F999'); // Выбираем диапазон E2:F999
var values = range.getValues(); // Получаем значения в диапазоне
// Перебираем все строки и столбцы в диапазоне
for (var row = 0; row < values.length; row++) {
for (var col = 0; col < values[row].length; col++) {
if (values[row][col] !== '') { // Проверяем, не пустая ли ячейка
values[row][col] += '%'; // Добавляем символ процента
}
}
}
range.setValues(values); // Обновляем ячейки новыми значениями
}
// очищаем все ячейки где стоит 0% в диапазоне E2:E 999
function clearZeroPercentages() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var lastRow = sheet.getLastRow();
var rangeE = sheet.getRange("E2:E" + lastRow);
var rangeF = sheet.getRange("F2:F" + lastRow);
var valuesE = rangeE.getValues();
var valuesF = rangeF.getValues();
// Очищаем ячейки, содержащие 0% в столбцах E и F
valuesE.forEach(function(row, i) {
if (row[0] === '0%') row[0] = '';
});
valuesF.forEach(function(row, i) {
if (row[0] === '0%') row[0] = '';
});
// Устанавливаем обновленные значения обратно в лист
rangeE.setValues(valuesE);
rangeF.setValues(valuesF);
}
// удаляем из диапазона E2:E999 из всех ячеек символа процента
function removePercentageSign() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var range = sheet.getRange("E2:F999");
var data = range.getValues();
// Удаляем символ процента из всех ячейк
var newData = data.map(function(row) {
return row.map(function(cell) {
if (typeof cell === 'string' && cell.endsWith('%')) {
return cell.slice(0, -1);
}
return cell;
});
});
// Устанавливаем обновленные данные обратно в диапазон
range.setValues(newData);
}
// во все ячейки где пустота , ставим 0% в диапазоне E2:F999
function fillEmptyWithZeroPercentage() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var lastRow = sheet.getRange("A" + sheet.getLastRow()).getNextDataCell(SpreadsheetApp.Direction.UP).getRow();
var rangeE = sheet.getRange("E2:E" + lastRow);
var rangeF = sheet.getRange("F2:F" + lastRow);
var valuesE = rangeE.getValues();
var valuesF = rangeF.getValues();
// Заполняем пустые ячейки текстом "0%" в столбцах E и F
valuesE.forEach(function(row, i) {
if (!row[0]) row[0] = '0%'; // Если ячейка пуста, заполняем её "0%"
});
valuesF.forEach(function(row, i) {
if (!row[0]) row[0] = '0%'; // Если ячейка пуста, заполняем её "0%"
});
// Устанавливаем обновленные значения обратно в лист
rangeE.setValues(valuesE);
rangeF.setValues(valuesF);
}
// функция сортировки внутри которой мы сначала чистим ячейки в диапазоне E2:F999 где стоит ноль,
// потом удаляем из E2:F999 в ячейках символы процентов
function sortSheetByColumn(columnIndex, shouldConvertToPercent) {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
clearZeroPercentages(); // Очистка нулевых процентов перед сортировкой
removePercentageSign(); // Удаление символа процента
// Вызываем кастомную функцию сортировки
customSort(sheet, columnIndex);
}
function customSort(sheet, columnIndex) {
// Получаем данные и формулы
var lastRow = sheet.getLastRow();
var range = sheet.getRange('A2:F' + lastRow);
var data = range.getValues();
var formulas = range.getFormulas();
// Привязываем значения и формулы к их индексам
var combinedData = data.map(function(row, index) {
return {
value: row[columnIndex - 1],
formulas: formulas[index],
index: index,
row: row
};
});
// Сортировка
combinedData.sort(compare);
// Разделяем отсортированные значения и формулы
var sortedValues = combinedData.map(function(item) { return item.row; });
var sortedFormulas = combinedData.map(function(item) { return item.formulas; });
// Записываем отсортированные данные
range.setValues(sortedValues);
// Обновляем формулы
sortedFormulas.forEach(function(rowFormulas, rowIndex) {
rowFormulas.forEach(function(formula, colIndex) {
if (formula) { // Обновляем только ячейки с формулами
sheet.getRange(rowIndex + 2, colIndex + 1).setFormula(formula);
}
});
});
}
function compare(a, b) {
var valA = a.value === '' || a.value === '0%' ? 0 : parseFloat(a.value.replace(',', '.'));
var valB = b.value === '' || b.value === '0%' ? 0 : parseFloat(b.value.replace(',', '.'));
// Положительные числа идут перед нулями и отрицательными числами, сортируются по убыванию
if (valA > 0 && valB <= 0) return -1;
if (valB > 0 && valA <= 0) return 1;
if (valA > 0 && valB > 0) return valB - valA;
// Нули идут после положительных и отрицательных чисел
if (valA === 0 && valB !== 0) return 1;
if (valB === 0 && valA !== 0) return -1;
// Среди отрицательных чисел меньшее по абсолютной величине число идет перед большим
if (valA < 0 && valB < 0) return Math.abs(valA) - Math.abs(valB);
return 0; // Если все проверки пройдены и значения равны, порядок не меняется
}
3
2
1
-1
-2
-3
function sortSheetByColumn(columnIndex, shouldConvertToPercent) {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
clearZeroPercentages(); // Очистка нулевых процентов перед сортировкой
removePercentageSign(); // Удаление символа процента
var lastRow = sheet.getLastRow();
var range = sheet.getRange('A2:F' + lastRow);
// Сортируем диапазон по столбцу с индексом columnIndex в убывающем порядке
range.sort({column: columnIndex, ascending: false});
}
function sortSheetByColumnE() {
sortSheetByColumn(5, false); // Сортировка по столбцу E без изменения формата
addPercentageToCells(); // Вызов функции для добавления символа процента в конец каждой ячейки диапазона E2:F999
fillEmptyWithZeroPercentage()
}
function sortSheetByColumnF() {
sortSheetByColumn(6, true); // Сортировка по столбцу F с изменением формата на проценты
addPercentageToCells(); // Вызов функции для добавления символа процента в конец каждой ячейки диапазона E2:F999
fillEmptyWithZeroPercentage()
}
// добавляем символ процента в конец каждой ячейки диапазона E2:F999
function addPercentageToCells() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var range = sheet.getRange('E2:F999'); // Выбираем диапазон E2:F999
var values = range.getValues(); // Получаем значения в диапазоне
// Перебираем все строки и столбцы в диапазоне
for (var row = 0; row < values.length; row++) {
for (var col = 0; col < values[row].length; col++) {
if (values[row][col] !== '') { // Проверяем, не пустая ли ячейка
values[row][col] += '%'; // Добавляем символ процента
}
}
}
range.setValues(values); // Обновляем ячейки новыми значениями
}
// очищаем все ячейки где стоит 0% в диапазоне E2:E 999
function clearZeroPercentages() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var lastRow = sheet.getLastRow();
var rangeE = sheet.getRange("E2:E" + lastRow);
var rangeF = sheet.getRange("F2:F" + lastRow);
var valuesE = rangeE.getValues();
var valuesF = rangeF.getValues();
// Очищаем ячейки, содержащие 0% в столбцах E и F
valuesE.forEach(function(row, i) {
if (row[0] === '0%') row[0] = '';
});
valuesF.forEach(function(row, i) {
if (row[0] === '0%') row[0] = '';
});
// Устанавливаем обновленные значения обратно в лист
rangeE.setValues(valuesE);
rangeF.setValues(valuesF);
}
// удаляем из диапазона E2:E999 из всех ячеек символа процента
function removePercentageSign() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var range = sheet.getRange("E2:F999");
var data = range.getValues();
// Удаляем символ процента из всех ячейк
var newData = data.map(function(row) {
return row.map(function(cell) {
if (typeof cell === 'string' && cell.endsWith('%')) {
return cell.slice(0, -1);
}
return cell;
});
});
// Устанавливаем обновленные данные обратно в диапазон
range.setValues(newData);
}
// во все ячейки где пустота , ставим 0% в диапазоне E2:F999
function fillEmptyWithZeroPercentage() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var lastRow = sheet.getRange("A" + sheet.getLastRow()).getNextDataCell(SpreadsheetApp.Direction.UP).getRow();
var rangeE = sheet.getRange("E2:E" + lastRow);
var rangeF = sheet.getRange("F2:F" + lastRow);
var valuesE = rangeE.getValues();
var valuesF = rangeF.getValues();
// Заполняем пустые ячейки текстом "0%" в столбцах E и F
valuesE.forEach(function(row, i) {
if (!row[0]) row[0] = '0%'; // Если ячейка пуста, заполняем её "0%"
});
valuesF.forEach(function(row, i) {
if (!row[0]) row[0] = '0%'; // Если ячейка пуста, заполняем её "0%"
});
// Устанавливаем обновленные значения обратно в лист
rangeE.setValues(valuesE);
rangeF.setValues(valuesF);
}
// функция сортировки внутри которой мы сначала чистим ячейки в диапазоне E2:E999 где стоит ноль,
// потом удаляем из E2:E999 в ячейках символы процентов
function sortSheetByColumn(columnIndex, shouldConvertToPercent) {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
clearZeroPercentages(); // Очистка нулевых процентов перед сортировкой
removePercentageSign(); // Удаление символа процента
var lastRow = sheet.getLastRow();
var range = sheet.getRange('A2:F' + lastRow);
// Сортируем диапазон по столбцу с индексом columnIndex в убывающем порядке
range.sort({column: columnIndex, ascending: false});
}
=ЕСЛИ(ЛЕВСИМВ(A3; 2) = "LD"; ЕСЛИ(ЕСЛИОШИБКА(ПОИСКПОЗ(ПРАВСИМВ(A3; ДЛСТР(A3) - 2); A:A; 0); ЛОЖЬ); 0; ЕСЛИ(A3 = "LDUSDT"; 1 * B3; ЕСЛИОШИБКА(ВПР(ПРАВСИМВ(A3; ДЛСТР(A3) - 2) & "USDT"; price!A:B; 2; ЛОЖЬ) * B3; ЕСЛИОШИБКА(ВПР(ПРАВСИМВ(A3; ДЛСТР(A3) - 2) & "BTC"; price!A:B; 2; ЛОЖЬ) * $C$2 * B3; ЕСЛИ(A3 = "USDT"; 1 * B3; "Нет цены для монеты и USDT или BTC"))))); ЕСЛИОШИБКА(ВПР(A3 & "USDT"; price!A:B; 2; ЛОЖЬ) * B3; ЕСЛИОШИБКА(ВПР(A3 & "BTC"; price!A:B; 2; ЛОЖЬ) * $C$2 * B3; ЕСЛИ(A3 = "USDT"; 1 * B3; "Нет цены для монеты и USDT или BTC"))))
=ЕСЛИ(ЕСЛИОШИБКА(ПОИСКПОЗ(ПРАВСИМВ(A1; ДЛСТР(A1) - 2); A:A; 0); ЛОЖЬ); 0; ЕСЛИОШИБКА(ВПР(A1 & "USDT"; price!A:B; 2; ЛОЖЬ) * B1; ЕСЛИОШИБКА(ВПР(A1 & "BTC"; price!A:B; 2; ЛОЖЬ) * $C$1 * B1; ЕСЛИ(ЛЕВСИМВ(A1; 2) = "LD"; ЕСЛИ(ЕСЛИОШИБКА(ВПР(ПРАВСИМВ(A1; ДЛСТР(A1) - 2) & "USDT"; price!A:B; 2; ЛОЖЬ) * B1; ЕСЛИОШИБКА(ВПР(ПРАВСИМВ(A1; ДЛСТР(A1) - 2) & "BTC"; price!A:B; 2; ЛОЖЬ) * $C$1 * B1; ЕСЛИ(ИЛИ(A1 = "LDUSDT"; A1 = "USDT"); 1 * B1; "Нет цены для монеты и USDT или BTC")))); "Нет цены для монеты и USDT или BTC"))))
=ЕСЛИ(ЕСТЬОШИБКА(ПОИСКПОЗ(ПРАВСИМВ(A6; ДЛСТР(A6) - 2); A:A; 0)), ЕСЛИОШИБКА(ВПР(A6 & "USDT"; price!A:B; 2; ЛОЖЬ) * B6, ЕСЛИОШИБКА(ВПР(A6 & "BTC"; price!A:B; 2; ЛОЖЬ) * $C$5 * B6, ЕСЛИ(ЛЕВСИМВ(A6; 2) = "LD", ЕСЛИОШИБКА(ВПР(ПРАВСИМВ(A6; ДЛСТР(A6) - 2) & "USDT"; price!A:B; 2; ЛОЖЬ) * B6, ЕСЛИОШИБКА(ВПР(ПРАВСИМВ(A6; ДЛСТР(A6) - 2) & "BTC"; price!A:B; 2; ЛОЖЬ) * $C$5 * B6, "Нет цены для монеты и USDT или BTC")), "Нет цены для монеты и USDT или BTC"))))
:: @echo off
setlocal
:: Создаем уникальный идентификатор для нашего процесса поиска
set "searchID=%random%"
:: Создаем временный файл для хранения результатов
set "tempfile=%temp%\temp_search_results_%searchID%.txt"
set "flagfile=%tempfile%.flag"
:: Запускаем поиск в фоновом режиме
start /b cmd /c "(for %%D in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (dir /s /b "%%D:\Magneto.exe" 2>nul >> "%tempfile%") && (echo Done > "%flagfile%"))"
:: Ожидаем завершения поиска или истечения таймера
set /a "timeout=600"
:waitloop
if exist "%flagfile%" (
goto searchdone
)
timeout /t 1 /nobreak >nul
set /a "timeout-=1"
if !timeout! leq 0 (
goto searchdone
)
goto waitloop
:searchdone
:: Проверяем, нашелся ли файл и извлекаем путь
set "filepath="
if exist "%tempfile%" (
for /f "delims=" %%I in ('type "%tempfile%"') do (
set "filepath=%%~dpI"
goto filefound
)
)
:filefound
if defined filepath (
echo Found Magneto.exe at: %filepath%Magneto.exe
) else (
echo File Magneto.exe not found after 600 seconds.
)
:: Очищаем временные файлы
del "%tempfile%" 2>nul
del "%flagfile%" 2>nul
endlocal
C:\Users\Administrator\Downloads>setlocal
C:\Users\Administrator\Downloads>set "searchID=4735"
C:\Users\Administrator\Downloads>set "tempfile=C:\Users\Administrator\AppData\Local\Temp\temp_search_results_4735.txt"
C:\Users\Administrator\Downloads>set "flagfile=C:\Users\Administrator\AppData\Local\Temp\temp_search_results_4735.txt.flag"
C:\Users\Administrator\Downloads>start /b cmd /c "(for %D in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (dir /s /b "%D:\Magneto.exe" 2>nul >> "C:\Users\Administrator\AppData\Local\Temp\temp_search_results_4735.txt") && (echo Done > "C:\Users\Administrator\AppData\Local\Temp\temp_search_results_4735.txt.flag"))"
C:\Users\Administrator\Downloads>set /a "timeout=600"
C:\Users\Administrator\Downloads>if exist "C:\Users\Administrator\AppData\Local\Temp\temp_search_results_4735.txt.flag" (goto searchdone )
C:\Users\Administrator\Downloads>timeout /t 1 /nobreak 1>nul
C:\Users\Administrator\Downloads>(dir /s /b "C:\Magneto.exe" 2>nul 1>>"C:\Users\Administrator\AppData\Local\Temp\temp_search_results_4735.txt" ) && (echo Done 1>"C:\Users\Administrator\AppData\Local\Temp\temp_search_results_4735.txt.flag" )
C:\Users\Administrator\Downloads>set /a "timeout-=1"
C:\Users\Administrator\Downloads>if !timeout! LEQ 0 (goto searchdone )
C:\Users\Administrator\Downloads>set "filepath="
C:\Users\Administrator\Downloads>if exist "C:\Users\Administrator\AppData\Local\Temp\temp_search_results_4735.txt" (for /F "delims=" %I in ('type "C:\Users\Administrator\AppData\Local\Temp\temp_search_results_4735.txt"') do (
set "filepath=%~dpI"
goto filefound
) )
C:\Users\Administrator\Downloads>if defined filepath (echo Found Magneto.exe at: Magneto.exe ) else (echo File Magneto.exe not found after 600 seconds. )
File Magneto.exe not found after 600 seconds.
C:\Users\Administrator\Downloads>del "C:\Users\Administrator\AppData\Local\Temp\temp_search_results_4735.txt" 2>nul
C:\Users\Administrator\AppData\Local\Temp\temp_search_results_4735.txt
C:\Users\Administrator\Downloads>del "C:\Users\Administrator\AppData\Local\Temp\temp_search_results_4735.txt.flag" 2>nul
C:\Users\Administrator\Downloads>endlocal
C:\Users\Administrator\Downloads>(dir /s /b "D:\Magneto.exe" 2>nul 1>>"C:\Users\Administrator\AppData\Local\Temp\temp_search_results_4735.txt" ) && (echo Done 1>"C:\Users\Administrator\AppData\Local\Temp\temp_search_results_4735.txt.flag" )
C:\Users\Administrator\Downloads>(dir /s /b "E:\Magneto.exe" 2>nul 1>>"C:\Users\Administrator\AppData\Local\Temp\temp_search_results_4735.txt" ) && (echo Done 1>"C:\Users\Administrator\AppData\Local\Temp\temp_search_results_4735.txt.flag" )
:: @echo off
setlocal
:: Создаем уникальный идентификатор для нашего процесса поиска
set "searchID=%random%"
:: Создаем временный файл для хранения результатов
set "tempfile=%temp%\temp_search_results_%searchID%.txt"
set "flagfile=%tempfile%.flag"
:: Запускаем поиск в фоновом режиме
start /b cmd /c "(for %%D in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (dir /s /b "%%D:\Magneto.exe" 2>nul >> "%tempfile%") && (echo Done > "%flagfile%"))"
:: Ожидаем завершения поиска или истечения таймера
set /a "timeout=600"
:waitloop
if exist "%flagfile%" (
goto searchdone
)
timeout /t 1 /nobreak >nul
set /a "timeout-=1"
if !timeout! leq 0 (
goto searchdone
)
goto waitloop
:searchdone
:: Проверяем, нашелся ли файл и извлекаем путь
set "filepath="
if exist "%tempfile%" (
for /f "usebackq delims=" %%I in ("%tempfile%") do (
set "filepath=%%~dpI"
goto filefound
)
)
:filefound
if defined filepath (
echo Found Magneto.exe at: %filepath%Magneto.exe
) else (
echo File Magneto.exe not found after 600 seconds.
)
:: Очищаем временные файлы
del "%tempfile%" 2>nul
del "%flagfile%" 2>nul
endlocal
C:\Users\Administrator\Downloads>setlocal
C:\Users\Administrator\Downloads>set "searchID=2949"
C:\Users\Administrator\Downloads>set "tempfile=C:\Users\Administrator\AppData\Local\Temp\temp_search_results_2949.txt"
C:\Users\Administrator\Downloads>set "flagfile=C:\Users\Administrator\AppData\Local\Temp\temp_search_results_2949.txt.flag"
C:\Users\Administrator\Downloads>start /b cmd /c "(for %D in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (dir /s /b "%D:\Magneto.exe" 2>nul >> "C:\Users\Administrator\AppData\Local\Temp\temp_search_results_2949.txt") && (echo Done > "C:\Users\Administrator\AppData\Local\Temp\temp_search_results_2949.txt.flag"))"
C:\Users\Administrator\Downloads>set /a "timeout=600"
C:\Users\Administrator\Downloads>if exist "C:\Users\Administrator\AppData\Local\Temp\temp_search_results_2949.txt.flag" (goto searchdone )
C:\Users\Administrator\Downloads>timeout /t 1 /nobreak 1>nul
C:\Users\Administrator\Downloads>(dir /s /b "C:\Magneto.exe" 2>nul 1>>"C:\Users\Administrator\AppData\Local\Temp\temp_search_results_2949.txt" ) && (echo Done 1>"C:\Users\Administrator\AppData\Local\Temp\temp_search_results_2949.txt.flag" )
C:\Users\Administrator\Downloads>set /a "timeout-=1"
C:\Users\Administrator\Downloads>if !timeout! LEQ 0 (goto searchdone )
C:\Users\Administrator\Downloads>set "filepath="
C:\Users\Administrator\Downloads>if exist "C:\Users\Administrator\AppData\Local\Temp\temp_search_results_2949.txt" (for /F "usebackq delims=" %I in ("C:\Users\Administrator\AppData\Local\Temp\temp_search_results_2949.txt") do (
set "filepath=%~dpI"
goto filefound
) )
Не удается найти файл C:\Users\Administrator\AppData\Local\Temp\temp_search_results_2949.txt.
C:\Users\Administrator\Downloads>if defined filepath (echo Found Magneto.exe at: Magneto.exe ) else (echo File Magneto.exe not found after 600 seconds. )
File Magneto.exe not found after 600 seconds.
C:\Users\Administrator\Downloads>del "C:\Users\Administrator\AppData\Local\Temp\temp_search_results_2949.txt" 2>nul
C:\Users\Administrator\AppData\Local\Temp\temp_search_results_2949.txt
C:\Users\Administrator\Downloads>del "C:\Users\Administrator\AppData\Local\Temp\temp_search_results_2949.txt.flag" 2>nul
C:\Users\Administrator\Downloads>endlocal
#Functions, к
/(?!#[a-zA-Zа-яА-Я0-9_]+\s+)(#[a-zA-Zа-яА-Я]+)[,.!:?\s]?(\s[a-zA-Zа-яА-Я])/g
#Functions, к
то есть почему-то захватывает , к