2016-10-26 10 views
0

Итак, сегодня у меня есть задача, наложенная на мой стол, и я не могу заставить этот скрипт работать правильно, чтобы выполнить указанную задачу. Мой босс дал мне два отдельных файла .xlsx со списком имен для обоих. Она спрашивает, что я нахожу и перечисляю имена, которые появляются на обоих файлах excel, а также находят и перечисляют, какие имена не отображаются в каждом файле отдельно.Скрипт для сравнения/сравнения двух отдельных файлов Excel - различия экспорта для обоих

Например

  • FiLea имеет Генри и Терри
  • FILEB имеет Генри и Саманта
  • Сформировать FileC, чтобы показать, что появляется Генри на обоих FiLea и FILEB
  • Генерирование Поданный показать Терри появляется на FileA, но не FileB
  • Сгенерировать FileE, чтобы показать, что Samantha появляется в FileB, но не FileA

Я начал с попытки сделать первую часть поиска списка сравнения, но я уже не могу заставить это работать. Он завершается, но это не экспорт. Все пользователи перечислены в обоих XLSX файлов в столбце A.

$strReference = Get-Content "C:\Users\person\Desktop\FileA.xlsx" 
$strDifference = Get-Content "C:\Users\person\Desktop\FileB.xlsx" 
Compare-Object $strReference $strDifference 
+0

'Get-Content' предназначен для чтения текстовых файлов. Книги Excel не являются текстовыми файлами. –

ответ

1

Чтобы быть честным, это та задача, которую я бы даже не счел достойной написания сценария. Вместо этого гораздо проще просто использовать функцию = COUNTIF() для каждого файла на листе Excel, чтобы проверить, отображается ли каждое имя в другом.

Итак, в итоге вы получите список людей в каждом файле, где = COUNTIF (список на другом листе, имя человека) = 1. Это ваш список людей, которые являются общими для обоих файлов. У вас также будет несколько из них, где тот же COUNTIF = 0, это ваши уникальные записи.

Разумеется, с именами вы должны быть осторожны, что они отформатированы одинаково, но работа над этим - это то же самое, независимо от того, делаете ли вы это в VBA или на листе.

Использование COUNTIF также имеет дополнительный бонус, что вы обнаружите любые дубликаты на листе (хотя вы увидите его против этого имени, на другом листе), если это также будет потенциальной проблемой.

+0

Это звучит намного проще, я сделаю это! Большое спасибо. – MMbill

1

Это может быть быстрее, чтобы просто скопировать и вставить имена из File1 в колонке А новый файл, «file3» и вставить имена из Файл2 в столбец B файла 3 ... тогда в столбце C файла 3 вы можете просто сделать = MATCH (B1, A: A, 0) и в столбце D файла3 просто сделать = MATCH (A1, B: B, 0) .. ячейки, возвращающие значения, означают, что у вас есть соответствие, а ячейки, которые дают ошибку, не имеют соответствия. Я не думаю, что вам понадобится VBA для этого ... это сработает?

+0

Я сделаю это. Большое спасибо! – MMbill