Есть ли способ скопировать только уникальные строки в столбце листа Excel на другой лист? - PullRequest
0 голосов
/ 09 января 2019

Я использую CSV-файл как $ AgencyMaster с двумя столбцами, AgencyID и AgencyName. В настоящее время я вручную ввожу их из другого файла, $ Excel_File_Path, но я бы хотел автоматически сгенерировать $ AgencyMaster, если это возможно.

$ Excel_File_Path имеет три листа: Лист1, Лист2 и Шаблон. Sheet1 и Sheet2 заполнены данными, в то время как Template используется в качестве графического представления упомянутых данных, которые заполняются на основе AgencyID. У меня есть скрипт, который открывает $ Excel_File_Path, вводит AgencyID в определенную ячейку, сохраняет его, а затем преобразует его в PDF. Это делается для каждого идентификатора агентства в $ AgencyMaster, который в настоящее время превышает 200.

В $ Excel_File_Path столбцы B и C в Sheet1 и Sheet2 содержат все идентификаторы AgencyID и AgencyNames, но есть несколько дубликатов. Я не могу удалить ни одну из строк, потому что, хотя они являются дубликатами в столбцах B и C, столбцы D, E, F и т. Д. Содержат разные данные, используемые в шаблоне. Поэтому мне нужно иметь возможность взять каждый уникальный AgentID и AgencyName, которые могут появиться в Sheet1 или Sheet2, и экспортировать их в CSV для использования в качестве $ AgencyMaster.

Пример:

(https://i.imgur.com/j8UIZqp.jpg)

В столбце B указан AgencyID, а в столбце C - AgencyName. Я хотел бы экспортировать уникальные значения каждого из Sheet1 и Sheet2 в CSV $ AgencyMaster Я нашел, как экспортировать его в другой лист в той же книге, просто не в отдельную книгу. Я также хотел бы сохранить его как .CSV с ведущими 0 в ячейке A.

# Checking that $AgencyMaster Exists, and importing the data if it does
    If (Test-Path $AgencyMaster) {
        $AgencyData = Import-CSV -Path $AgencyMaster 

        # Taking data from $AgencyMaster and assigning it to each variable
        ForEach ($Agency in $AgencyData) { 

            $AgencyID = $Agency.AgencyID
            $AgencyName = $Agency.AgencyName 


            # Insert agency code into cell D9 on Template worksheet
            $ExcelWS.Cells.Item(9,4) = $AgencyID
            $ExcelWB.Save()

            # Copy-Item Properties
            $Destination_File_Path = "$Xlsx_Destination\$AgencyID - 
$AgencyName - $company $month $year.xlsx"

            $CI_Props = @{

                'Path' = $Excel_File_Path;
                'Destination' = $Destination_File_Path;
                'PassThru' = $true;

            } # Close $CI_Props
            # Copy & Rename file
            Copy-Item @CI_Props

        } # Close ForEach

    } # Close IF

1 Ответ

0 голосов
/ 10 января 2019

Я бы рекомендовал использовать Sort-Object -Unique или Group-Object.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...