2 ওয়ার্কবুকের মধ্যে ডেটা তুলনা করুন


1

আমি 2 টি আলাদা ওয়ার্কবুকের 2 টি তুলনা করার চেষ্টা করছি। তারপরে, আমি 2 এর মধ্যে অনুপস্থিত ডেটা খুঁজে বের করতে এবং একটি পৃথক নতুন, আপডেট তালিকা তৈরি করা দরকার। তবে, কেবলমাত্র প্রথম তালিকা থেকে কোনও রেকর্ড রয়েছে তবে আমার ডেটা আপডেট করতে হবে। যদি তা না হয় তবে সেই ডেটাটি আপডেট করার দরকার নেই।

ই জি

Workbook 1
ID            Name      Code
...
futa-123456   Max       0a
futa-123458   Max       0a   
futb-ms8793   John      SX
futg-809153   May       gH
...

Workbook 2
ID            Name      Contact Address Code Flag
...
futa-123456   Max       ...       ...    0a   Y
futa-123457   Max       ...       ...    0a   Y
futb-XY5543   Sam       ...       ...    SX   N
futg-809153   May       ...       ...    gH   Y
futg-809154   May       ...       ...    gH   Y
... 

Final Result
Separate new sheet (doesn't natter which workbook)
ID            Name      Code
...
futa-123456   Max       0a
futa-123457   Max       0a* 
futa-123458   Max       0a   
futb-ms8793   John      SX
futg-809153   May       gH
futg-809154   May       gH*
...

সুতরাং, এক্সেল ম্যাক্সের জন্য ওয়ার্কবুকের উভয় পক্ষের পার্থক্যগুলি দেখায় কারণ উভয় পক্ষের মধ্যে পার্থক্য রয়েছে এবং তারা কার্যপত্রে উপস্থিত রয়েছে। মেয়ের জন্য, কেবলমাত্র কার্যপত্রিকা 2 পার্থক্য দেখায় যেহেতু কেবলমাত্র ওয়ার্কবুক 2 এর পার্থক্য রয়েছে (তবে হবে মে থেকে কার্যকরীতে উপস্থিত থাকায় এখনও দেখান 1)। স্যাম হাইলাইট করা হবে না কারণ ওয়ার্কবুক 1 এ স্যাম নেই।

মূলত, আমি উত্স হিসাবে ওয়ার্কবুক 1 এর সাথে তুলনা করছি। যদি ওয়ার্কবুক 1 এ রেকর্ড না থাকে তবে ওয়ার্কবুক 2 এ উপস্থিত থাকে তবে তা হাইলাইট করা হবে না।

এই কাজ করতে একটি উপায় আছে কি?


আরও ভাল বোঝার জন্য দয়া করে চূড়ান্ত ফলাফল সম্পাদনা করুন।
রাজেশ এস

পরিবর্তনগুলি গা bold় বলে মনে হচ্ছে না তাই আমি শেষে * যুক্ত করেছি। এটি এখনও অস্পষ্ট কিনা তা আমাকে জানান।
উইলসন লিয়াও

উত্তর:


0

এটি ম্যানুয়ালি করার জন্য প্রয়োজনীয় পদক্ষেপগুলি বেশ দীর্ঘ এবং ক্লান্তিকর।

ধরে নিই যে ওয়ার্কবুক 1-এর ডেটা Sheet1এই পদক্ষেপগুলি অনুসরণ করছে:

  1. ওয়ার্কবুক 2 থেকে ডেটা (শিরোনাম সহ) অনুলিপি করুন
  2. A1ওয়ার্কবুক 1-এ একটি ফাঁকা কার্যপত্রকের ঘরে আটকে দিন (বলুন Sheet2)
  3. এই সূত্রটি G1→ তে প্রবেশ করান →=MATCH(B1,Sheet1!B:B,0)
  4. সূত্রটি অনুলিপি করে কপি-পেস্ট করুন বা পূরণ করুন। আমি এই কীস্ট্রোক ক্রমটি পছন্দ করি:
    • Left
    • Ctrl+ +Down
    • Right
    • Ctrl+ Shift+Up
    • Ctrl+ +D
  5. কলামের জন্য ফিল্টারিং চালু করুন ( Ctrl+ Shift+ L)
  6. #N/Aশুধুমাত্র ফিল্টার । (যদি কেউ না থাকে তবে এই পদক্ষেপটি এবং পরবর্তীটি উপেক্ষা করুন))
  7. সমস্ত #N/Aসারি মুছুন
  8. কলামগুলি মুছুন C, D, F,G
  9. ডেটা হাইলাইট করুন
  10. ওয়ার্কবুক 1 (বর্তমান ওয়ার্কবুক) থেকে ডেটা ( শিরোনামগুলি বাদ দিয়ে ) অনুলিপি করুনSheet1
  11. কক্ষে ডান-ক্লিক করুন A2এর Sheet2নির্বাচনInsert Copied Cells
  12. নিশ্চিত করুন যে Shift cells downনির্বাচিত হয়েছে, প্রেসOK
  13. সমস্ত ডেটা নির্বাচন করুন এবং মাধ্যমে সদৃশ অপসারণ DataData ToolsRemove Duplicates। (নিশ্চিত করুন যে কেবল কলাম IDপরীক্ষা করা আছে))
  14. কলাম অনুসারে বাছাই করুন ID


অবশ্যই সর্বোত্তম সমাধান হ'ল এই পদক্ষেপগুলি স্বয়ংক্রিয় করা। নীচের ভিবিএ কোড এটি করে।

ওয়ার্কবুক 1 এ এই কোডটিকে একটি স্ট্যান্ডার্ড মডিউলটিতে অনুলিপি করুন:

'============================================================================================
' Module     : a standard module in Workbook 1
' Version    : 0.1.1
' Part       : 1 of 1
' References : N/A
' Source     : https://superuser.com/a/1331855/763880
'============================================================================================
Option Explicit

Public Sub CrossCompareSheets()

  Const s_CompareToWorkbook  As String = "Workbook 2.xlsx"
  Const s_CompareToSheet     As String = "Sheet1"
  Const s_CompareToTopLeft   As String = "A1"
  Const s_CompareToExtraCols As String = "C,D,F"
  Const s_SourceSheet        As String = "Sheet1"
  Const s_SourceTopLeft      As String = "A1"
  Const n_SourceMatchColumn  As Long = 2
  Const s_ResultSheet        As String = "Sheet2"
  Const s_ResultTopLeft      As String = "A1"
  Const n_ResultMatchColumn  As Long = 2
  Const n_ResultUniqueColumn As Long = 1
  Const n_ResultSortColumn   As Long = 1

  Dim wkstCompareTo  As Worksheet: Set wkstCompareTo = Workbooks(s_CompareToWorkbook).Worksheets(s_CompareToSheet)
  Dim rngCompareTo As Range: Set rngCompareTo = wkstCompareTo.Range(s_CompareToTopLeft).CurrentRegion
  Dim wkstSource  As Worksheet: Set wkstSource = ActiveWorkbook.Worksheets(s_SourceSheet)
  Dim rngSource As Range: Set rngSource = wkstSource.Range(s_SourceTopLeft).CurrentRegion
  Dim wkstResult  As Worksheet: Set wkstResult = ActiveWorkbook.Worksheets(s_ResultSheet)
  Dim rngResult As Range
  Dim celResultTopLeft As Range: Set celResultTopLeft = wkstResult.Range(s_ResultTopLeft)

  wkstResult.UsedRange.Clear
  rngCompareTo.Copy Destination:=wkstResult.Range(s_ResultTopLeft)
  Set rngResult = celResultTopLeft.CurrentRegion
  With rngResult.Resize(ColumnSize:=1).Offset(ColumnOffset:=rngResult.Columns.Count)
    .FormulaR1C1 = Replace(Replace(Replace( _
      "=MATCH(RC{a},{Sheet}!C{b},0)" _
      , "{a}", n_ResultMatchColumn), "{Sheet}", s_SourceSheet), "{b}", n_SourceMatchColumn)
    .Copy
    .PasteSpecial xlPasteValues
  End With
  Set rngResult = celResultTopLeft.CurrentRegion
  rngResult.AutoFilter Field:=rngResult.Columns.Count, Criteria1:="#N/A"
  rngResult.Offset(RowOffset:=1).SpecialCells(xlCellTypeVisible).EntireRow.Delete
  rngResult.AutoFilter
  Dim colsToBeDeleted As Range
  Set colsToBeDeleted = rngResult.Resize(ColumnSize:=1).Offset(ColumnOffset:=rngResult.Columns.Count - 1).EntireColumn
  Dim varColumn As Variant
  For Each varColumn In Split(s_CompareToExtraCols, ",")
    Set colsToBeDeleted = Union(colsToBeDeleted, wkstResult.Range(varColumn & ":" & varColumn))
  Next varColumn
  colsToBeDeleted.Delete
  Set rngResult = celResultTopLeft.CurrentRegion
  rngSource.Offset(RowOffset:=1).Copy Destination:=celResultTopLeft.Offset(RowOffset:=rngResult.Rows.Count)
  Set rngResult = celResultTopLeft.CurrentRegion
  rngResult.RemoveDuplicates Columns:=n_ResultUniqueColumn, Header:=xlYes
  Set rngResult = celResultTopLeft.CurrentRegion
  With wkstResult.Sort
    .SortFields.Clear
    .SortFields.Add Key:=rngResult.Columns(n_ResultSortColumn)
    .SetRange rngResult
    .Header = xlYes
    .Apply
  End With

End Sub

নোট:

আপনি বিভিন্ন কলাম এবং ফাইলের নামগুলি পূরণ করতে শীর্ষে থাকা কনস্ট্যান্টগুলি পরিবর্তন করতে পারেন এবং কোডটি স্বয়ংক্রিয়ভাবে সামঞ্জস্য হবে।


আমি এটির প্রশংসা করি তবে ভিবিএ আমার ক্ষেত্রে এটি সম্ভব নয়। আমি যে ডেটা, কলাম এবং ফাইলের নামগুলির সাথে তুলনা করছি তা ক্রমাগত পরিবর্তন হচ্ছে। এটি দীর্ঘ এবং ক্লান্তিকর হতে পারে তবে এটি ম্যানুয়াল তুলনার তুলনায় অসীম দ্রুত হবে। আশা করি আপনি আমাকে সাহায্য করতে পারেন
উইলসন লিয়াও

@ উইলসনলিয়াও ওকি, ডকি। আমি আমার উত্তর আপডেট করব। শুধু তাই আপনি কি জানেন, আমি আছে এমনভাবে আপনি সহজেই উপরের কলাম এবং ফাইলের নাম পরিবর্তন হতে পারে এবং কোড তারপর নতুন মান সঙ্গে কাজ করবে মধ্যে VBA সেট আপ, এটা এখনও দ্রুততর যে ভাবে হতে হবে।
রবিন্টিসট

আহ আমি দেখি. আমার ভিবিএ-তে 0 জ্ঞান রয়েছে তাই এর সাথে পরীক্ষার জন্য আমার সময় প্রয়োজন। আমি এখনও অ-ভিবিএ পদ্ধতিটির প্রশংসা করব কারণ স্বল্পমেয়াদে এখনও এটি ব্যবহার করা দরকার। ধন্যবাদ!
উইলসন লিয়াও

@ উইলসনলিয়াও ঠিক আছে ম্যানুয়াল পদক্ষেপগুলি সমস্ত সাজানো হয়েছে (আমি আশা করি ;-)) এবং আপলোড হয়েছে।
রবিন্টিসট

আমি যদি নতুন টেবিলটিতে নতুন আপডেট হওয়া তথ্যটি হাইলাইট করতে চাই তবে আমি কীভাবে এটি করব?
উইলসন লিয়াও

-1

আমি অনন্য তালিকা তুলনা এবং তৈরি করতে সবচেয়ে সহজ পদ্ধতির পরামর্শ দিতে চাই।

এই পদক্ষেপগুলি অনুসরণ করুন:

  • উভয় ওয়ার্কবুক থেকে ডেটা খালি শীটে অনুলিপি করুন।
  • সম্পূর্ণ ডেটা নির্বাচন করুন।
  • হোম ট্যাবে বাছাই করুন এবং ফিল্টার ক্লিক করুন।
  • আইডিতে আরোহী ক্রমে ডেটা সাজান।
  • আবার পুরো ডেটা নির্বাচন করুন।
  • ডেটা ট্যাবে যান এবং নকল সরান ক্লিক করুন।
  • সদৃশগুলি সন্ধান এবং সরাতে আইডি কলাম নির্বাচন করুন।

আপনি নীচে দেখানো মত আপনার তথ্য খুঁজে পেতে:

ID           Name      Code
futa-123456  Max        0a
futa-123457  Max        0a
futa-123458  Max        0a
futb-ms8793  John       SX
futb-xy5543  Sam        Sx
futg-890153  May        gH
futg-890154  May        GH

বিশেষ দ্রষ্টব্য

  • উপরের প্রদর্শিত পদ্ধতিটি ছোট ডাটাবেসের জন্য উপযুক্ত।
  • দ্রুত কাজ করার জন্য আপনি পুরো প্রক্রিয়াটি ম্যাক্রো হিসাবে রেকর্ড করতে পারেন।

আমি দুঃখিত, কিন্তু এই সমাধানটি কাজ করে না। এটি Samফলাফলের মধ্যে অন্তর্ভুক্ত রয়েছে , ওপি খুব স্পষ্টভাবে বানান করেছে যাকে বাদ দেওয়া উচিত।
রবিন্টস

যেহেতু SAM পত্রক 2 এ অনন্য রেকর্ড তাই যুক্তিযুক্তভাবে এটি অনন্য রেকর্ডের জন্য উভয় শীটের তুলনা করার পরে উপস্থিত হবে। যেহেতু ওপিতে কেবল অনুলিপি এবং পেস্ট করা মান রয়েছে এবং ওপি তালিকাতে অন্তর্ভুক্ত করতে এটি মিস করেছে।
রাজেশ এস

-1

সম্পাদনা পুনরায় পড়া প্রশ্ন, এবং সমস্যাটি আমার বোঝার সাথে আপডেট হয়েছে ...

দ্বিতীয় সম্পাদনাটি যেখানে আমি শীট 1 এবং 2 এর মধ্যে মিশ্রিত হয়েছি

নতুন শীটে যা হওয়া দরকার সেই ডেটাগুলি খুঁজতে কারণ এটি কেবল শীট 1 এ বিদ্যমান ...

=match(a1, sheet2!a:a,0). 

#Na এর জন্য ফিল্টার।

শীট 1 এ ডেটা আপডেট করতে, ডেটার ডানদিকে কিছুটা এভাবে কলাম যুক্ত করুন;

=Iferror(Index(sheet2!d:d,match(a1, sheet2!a:a,0)),D1)

এটিকে শীট 1 এর অতিরিক্ত কলামে অনুলিপি করুন, তারপরে মূল ডি 1 কলামের মান হিসাবে অনুলিপি করুন এবং আটকান।

আরেকটি পিয়ানোট; যদি আইডির শিটগুলির মধ্যে সামঞ্জস্য না হয় (ম্যাচের জন্য ব্যবহার করা যায় না) একটি 'সহায়ক সাহায্যকারী কলাম' উপসংহারের নাম এবং কোড তৈরি করুন, বা 2 টি শীটকে সঠিকভাবে তুলনা করতে যা কিছু ব্যবহার করা যেতে পারে create

(যদি আইডিগুলি মেলতে ব্যবহার করা না যায়, তবে আমি ডেটা সম্পর্কে প্রচুর প্রশ্ন জিজ্ঞাসা করতে শুরু করব, তবে এটি প্রশ্নের আওতার বাইরে)


এটি এমন ডেটা অন্তর্ভুক্ত করবে যা মূল তালিকায় নেই। আমি কেবলমাত্র ওয়ার্কবুক 1 এ বর্তমান তথ্য আপডেট করছি এবং অন্যান্য সমস্ত তথ্য উপেক্ষা করছি। ওয়ার্কবুকের তালিকায় না থাকলেও আইই স্যামকে হাইলাইট করা হবে না। তবে ম্যাক্সের হারিয়ে যাওয়া ডেটা হুবহু তুলে ধরা হবে কারণ তিনি ওয়ার্কবুকের তালিকায় রয়েছেন। ১. কী উপায় আছে যে আমি এটি ফিল্টার করতে পারি?
উইলসন লিয়াও

@ উইলসনলিয়াও স্নিপড!
রবিন্টিসট

দুর্ভাগ্যক্রমে আপনার সমস্যার ব্যাখ্যাটি গণনা করা হয় না - কেবল ওপি'রই হয় ;-) আপনার প্রথম সূত্রটি একটি প্রতিশ্রুতিবদ্ধ শুরু - এটি সমস্ত নকলকে বাদ দেয়। তবে / আপনি যদি দ্বিতীয় সূত্রটি সঠিকভাবে কাজ করতে পান (এবং এটিতে প্রথমটি সংশোধন করা আবশ্যক), এটি সমস্ত অনুপস্থিত তথ্য সঠিকভাবে ক্যাপচারের গ্যারান্টি দিতে পারে না কারণ এটি কেবল প্রথমটি গ্রহণ করে। তাই কখনও কখনও এটি কম দখল করবে এবং কখনও কখনও এটি একই ডেটা একাধিকবার দখল করবে। ওয়ার্কবুক 2-তে ঠিক একটি "অনুপস্থিত" নামটি ওয়ার্কবুক 1-এর ঠিক একটি নামের সাথে
মিল থাকলে

@ আরবিন আমার ব্যাখ্যার কথা উল্লেখ করা হয়েছিল, কারণ আমার নিশ্চিত ছিল না যে এটি আমার ঠিক আছে, ভুল ব্যাখ্যা করা সমস্যার সমাধান করা কিছুটা কঠিন ... যা ঘটেছে বলে মনে হয় :- ডি এবং আপনার পরবর্তী বিষয়গুলি চমৎকার - আমি মিশ্রিত উপরে শীট 1 এবং 2
LJ01
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.