बिना लूपिंग के एक्सेल में खोजें और बदलें? - एक्सेल, पावरहेल

ऐसा लगता है इंटरनेट पर आम जवाब थोक खोज कैसे करें और एक्सेल फ़ाइल कॉलम पर प्रतिस्थापित करें।

मेरी समस्या यह है कि केवल 8 के पंक्तियों की फाइल पर, एक कॉलम में एक साधारण दो-वर्ण स्ट्रिंग को प्रतिस्थापित करने में 5 मिनट लगते हैं और फ़ाइल आकार में 1 एमबी भी नहीं है।

क्या कोई तेज़ / बेहतर तरीका है, या इसे अनुकूलित करने का एक तरीका भी है?

वर्तमान कोड: (एक अलग फ़ंक्शन में खोज / प्रतिस्थापन को प्रतिस्थापित करके थोड़ा और मॉड्यूलर और पुनः उपयोग करने योग्य बनाया गया है)

function excel_search_replace ( $worksheet, $column_name, $search_str, $replace_str ) {
echo "Replacing all "$search_str" with "$replace_str" in column "$column_name""
$range = $worksheet.Range( "$($column_name)1" ).EntireColumn
$search = $range.find( $search_str )
$i = 0

if ( $search -ne $null ) {
$i += 1
$first_addr = $search.Address
do {
$i += 1
$search.value() = $replace_str
$search = $range.FindNext( $search )
} while ( $search -ne $null -and $search.Address -ne $first_addr )
}
echo "...Found and replaced $i instances of "$search_str""
return $void
}

$source_file = "C:someexcelfile.xlsx"
$excel_obj = New-Object -ComObject "Excel.Application"
$excel_obj.DisplayAlerts = $false
$excel_obj.Visible = $false
$workbook = $excel_obj.Workbooks.Open( $source_file ) # Open the file
$sheet = $workbook.Sheets.Item( 1 ) # select target worksheet by index

excel_search_replace $sheet "A" "find this" "and replace with this"
[void]$workbook.save() # Save file
[void]$workbook.close() # Close file
[void]$excel_obj.quit() # Quit Excel
[Runtime.Interopservices.Marshal]::ReleaseComObject( $excel_obj ) >$null # Release COM

उत्तर:

जवाब के लिए 0 № 1
$Excel = New-Object -ComObject Excel.Application
$Workbook=$Excel.Workbooks.Open("FilesMyFile.xlsx”)
$WorkSheet = $Workbook.Sheets.Item(1)
$WorkSheet.Columns.Replace("ThisNeedsTobeReplaced","ImReplaced")

संबंधित सवाल
सबसे लोकप्रिय