• Макросов VBA Excel?

    @Iv_and_S
    "захардкодить" диапазоны , как в ответе выше - несложно, способов довольно много.
    строкой, словарем, массивом, да хоть массивом готовых к перебору и подставновке Ranges.

    но если есть возможность, написания логики "нахождения" диапазона - возможно это стоит сделать.
    т.е. динамически искать в листе начало/конец наборов данных.

    в какой то степени (в зависимости от алгоритма), это скажется на скорость работы.
    но зато, вы сможете не заботиться о изменении скрипта, при изменении диапазонов.
    Ответ написан
    Комментировать
  • Макросов VBA Excel?

    @Akina
    Сетевой и системный админ, SQL-программист.
    Адреса диапазонов в константу, в коде парсим и используем.
    Const Addresses As String = "E7:E14,F7:F14,G7:G14,G21:G108,H7:H14"
    
    Sub ...
    ...
    For Each RangeAddress In Split(Addresses, ",")
        Workbooks("srcX.xlsx").Sheets("SheetY").Range(RangeAddress).Copy Workbooks("dst.xlsx").Sheets("SheetZ").Range(RangeAddress)    
    Next


    Адреса диапазонов назначения тоже могут быть собраны в константу. А для обработки нескольких файлов дополнительно считать смещение и задействовать метод Range.Offset.
    Ответ написан
    1 комментарий
  • Увеличить столбцы не меня данные в Power Point?

    ProgrammerForever
    @ProgrammerForever Куратор тега Excel
    Учитель, автоэлектрик, программист, музыкант
    Разница между самым большим и самым маленьким тут в 100 раз, и диаграмма рисуется верно. Для таких рахношёрстных данных надо использовать логарифмическую шкалу.
    Ответ написан
    Комментировать
  • Восстановление данных с отформатированного диска?

    Zettabyte
    @Zettabyte
    Проф. восстановление данных ▪ Вопрос? См. профиль
    не одной фотки и ни одного документа, в чем может быть проблема

    У вас точно жёсткий диск в смысле HDD с вращающимися пластинами, а не SSD (твердотельный накопитель)? Для последнего, к сожалению, ситуация вполне реалистичная.

    Дальше вопросы:
    -- в ноутбуке нет никаких ухищрений "для скорости", наподобие маленького кэширующего ССД?
    -- какая файловая система использовалась на отформатированном диске?
    -- сколько времени прошло после форматирования (чем больше, тем хуже)?
    -- сохраняли ли какие-либо новые данные на отформатированный диск?

    Recuva, R-studio, Hetman Partition Recovery, Wondershare, Pandora Recovery это те которые вспомнил

    Если речь о Windows и соответствующих ФС, то попробуйте также R.saver. Он бесплатный, не требует установки. Главное - скачивайте и распаковывайте не на отформатированный диск.

    если я его занесу в сервис, разве у их есть какой-то другой софт для восстановления?

    Есть PC-3000 с Дата экстрактором. Однако, если вы на 100% уверены, что проблема исключительно логическая, то какие-то заметные улучшения он даст только в отдельных случаях.
    В нормальных местах диагностика бесплатная, вот памятка по выбору такого центра восстановления данных: https://xn----7sbbfbnfa0a2audfacc2cat8e9f.xn--p1ai/
    Ответ написан
    1 комментарий
  • За 5 месяцев использования SSD ушло 2% "здоровья" - это нормально?

    @Espleth
    Да хватит уже плясать с бубнами над SSD! Брать SSD и отрубать все что жрет диск в системе - это как брать дорогой автомобиль и не ездить на нем выше 60км/ч потому что вдруг сломается.
    Ответ написан
    Комментировать
  • Работа с ФИО в php при помощи switch или if else?

    petyagrill
    @petyagrill
    $a = 'Смирнова Екатерина Сергеевна';
    $rest = substr($a, -2, 2);
    switch ($rest) {
    	case 'ич':
    		$hello = 'Уважаемый '.$a;
    	break;
    	case 'на':
    		$hello = 'Уважаемая '.$a;
    	break;	
    	default:
    		$hello = 'Уважаемый(-ая) '.$a;
    	break;
    }
    Ответ написан
    2 комментария
  • Объясните php скрипт?

    @RadialAdmin
    Вы так и не узнали для чего вашему начальнику требуется перевести список IP в бинарный вид?
    Может хватит изобретать велосипеды, спросите уже конечную задачу и сделайте её прощё, чем по странным шагам предложенным им.
    Ответ написан
    3 комментария
  • Объясните php скрипт?

    Maxsior
    @Maxsior
    loading...
    Всё должно работать нормально.
    Вот так читабельнее:
    <?php
    file_put_contents(
    	'output', 
    	join(
    		PHP_EOL, 
    		array_map(
    			function ($sInput) {
    				list($ip, $mask) = explode('/', trim($sInput));
    				return substr(str_pad(decbin(ip2long($ip)), 32, 0, STR_PAD_LEFT), 0, $mask);
    			}, 
    			file('input', FILE_SKIP_EMPTY_LINES))
    		)
    	);
    ?>

    Начну разбор с array_map:
    Эта функция применяет другую функцию(тавтология, ну и пусть) к каждому элементу массива.
    Т.е. скрипт считывает массив строк в фаиле input, и к каждои строке применяет анонимную функцию, которая определяет ip($ip) и маску($mask), потом вырезает(substring) сам ip переводит в двоичныи код и доводит длину строки до 32 символов(strpad), заполняя ведущими нулями.
    После array_map получается массив из ip в двоичном виде.
    Потом функциеи join(то же, что implode()) объединяет массив в строку, разделяя элементы переносов строки(константа PHP_EOL).
    И пишет эту стоку в фаил output методом file_put_contents
    Ответ написан
    8 комментариев
  • Объясните php скрипт?

    orlov0562
    @orlov0562 Куратор тега PHP
    I'm cool!
    тому кто это написал, стоит прострелить колено..

    вот код с комментариями о происходящем
    $inputArr = file('input', FILE_SKIP_EMPTY_LINES); // читаем из файла все данные
    $outputArr = []; // пустой выходной массив
    
    foreach ($inputArr as $line) { // читаем построчно входные данные
    	list($ip, $mask) = explode('/', trim($line)); // разбиваем строку на $ip и $mask, по разделителю '/'
    	$ipAsLongInt = ip2long($ip); // Преобразуем ip адрес в десятичное число
    	$ipAsBinary = decbin($ipAsLongInt); // Преобразуем число в бинарное число
    	$ipAsBinaryWithCorrectLength = str_pad($ipAsBinary, 32, 0, STR_PAD_LEFT); // дополняем слева нулями до длинны 32 символа
    	$outputLine = substr($ipAsBinaryWithCorrectLength, 0, $mask); // Копируем из строки только первые $mask символов
    	$outputArr[] = $outputLine;
    }
    
    $outputRaw = join(PHP_EOL, $outputArr); // Соединяем все строки из массива символом перевода строки
    file_put_contents('output', $outputRaw); // Записываем данные в выходной файл


    И ответ: да, этот код делает то, что надо
    Ответ написан
    1 комментарий
  • Объясните php скрипт?

    @tplus
    В файл "output" пишет:
    1) строки из файла input, пропуская пустые, объединённые через PHP_EOL (конец строки => перевод на новую строку, из массива file('input', FILE_SKIP_EMPTY_LINES), к которому применяет функцию function ($sInput)
    2) которая берёт строку и
    2.1) в переменные $ip и $mask заносит значения, разделив строку на две от символа '/' + почистив её слева-справа от пробелов и т.п.
    2.2) возвращает вырезанную подстроку из дополненной слева строки до 32 символов нулями str_pad(decbin(ip2long($ip)), 32, 0, STR_PAD_LEFT) в виде результат преобразования переменной $ip от нулевого символа до символа с индексом $mask

    ip2long известная функция, гуглится в интернете: ip в число
    decbin переводит в бинарный код
    str_pad с параметрами как у вас делает строку вида 123 -> <29 нулей>123
    Ответ написан
    Комментировать
  • Объясните php скрипт?

    Stalker_RED
    @Stalker_RED
    Да, по идее сможет.
    если его разобрать на отдельные функции, получится как-то так:
    $input_lines = file('input.txt', FILE_SKIP_EMPTY_LINES);
        $output_lines = [];
        foreach ($input_lines as $line) {
            $line = trim($line);
            list($ip, $mask) = explode('/', $line);
            $ip_as_long = ip2long($ip);
            $ip_as_bin = decbin($ip_as_long);
            $padded_bin = str_pad($ip_as_long, 32, 0, STR_PAD_LEFT);
            $output_lines[] = substr($padded_bin, 0, $mask);
        }
        $out = join(PHP_EOL, $output_lines);
        file_put_contents('output.txt', $out);

    Если какие-то функции незнакомы - смотрите в документацию, там вверху поиск есть.
    Ответ написан
    Комментировать