এক্সেল: শর্তাধীনভাবে অন্য কোনও কন্টেন্টের সাথে মেলে এমন একটির ফর্ম্যাট ব্যবহার করে একটি ঘর বিন্যাস করুন


3

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

সুতরাং উদাহরণস্বরূপ, আমার কীটি নিম্নরূপে প্রতি সেল প্রতি মূল্য এবং প্রথম বন্ধনীতে নির্দেশিত ভিজ্যুয়াল বিন্যাস সহ:

A (red background)
B (green background)
C (blue background)

সুতরাং এটি একটি শীটে রয়েছে (বা বর্তমান শীটের একটি দূরবর্তী কোণে - যেটি ভাল। তারপরে, আমি শর্তসাপেক্ষ্য বিন্যাসকরণের জন্য চিহ্নিত এমন একটি অঞ্চলে, আমি সেই তিনটি বর্ণের একটি টাইপ করতে পারি এবং সেই ঘরটি যেখানে আমি এটি টাইপ করেছি সেখানে কী অনুসারে ভিজ্যুয়াল বিন্যাস করতে পারি। সুতরাং আমি যদি শর্তসাপেক্ষে ফর্ম্যাট করা কোষগুলির মধ্যে একটিতে "বি" টাইপ করি তবে এটি একটি সবুজ পটভূমি পায়।

(নোট করুন যে আমি ব্যাকগ্রাউন্ডগুলি কেবলমাত্র ব্যাখ্যার স্বাচ্ছন্দ্যের জন্য ব্যবহার করছি: আদর্শভাবে আমি সমস্ত ভিজ্যুয়াল ফর্ম্যাটটি অনুলিপি করতে চাই, এটি পূর্বভূমির রঙ, পটভূমির রঙ, ফন্টের ওজন, সীমানা বা যাই হোক না কেন আমি নিতে পারি) স্পষ্টতই পেয়ে যাও।)

এবং — কেবলমাত্র এটি অতিরিক্ত কৌশলযুক্ত করার জন্য I আমি যদি কীটিতে ফর্ম্যাটিংটি পরিবর্তন করি তবে সেই পরিবর্তনটি কীটি উল্লেখ করে এমন কক্ষগুলিতে প্রতিফলিত হওয়া উচিত। সুতরাং, আমি যদি সবুজ পটভূমি থেকে একটি বেগুনি পটভূমিতে চাবির "বি" ফর্ম্যাটিংটি পরিবর্তন করি তবে মূল শীটের যে কোনও "বি" নতুন রঙে যেতে হবে। একইভাবে, কী থেকে মানগুলি যুক্ত করা বা মুছে ফেলা সম্ভব হবে এবং মূল পরিবর্তনগুলি সেটে পরিবর্তনগুলি প্রয়োগ করা উচিত।

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

আমি জানি যে কেবলমাত্র একাধিক শর্তসাপেক্ষিক ফর্ম্যাটগুলি ব্যবহার করা সম্ভব, তবে আমার ব্যবহারের ক্ষেত্রটি হ'ল আমি শর্তসাপেক্ষী ফর্ম্যাটিংয়ের সাথে কথোপকথনকারী নয় এমন ব্যক্তির জন্য উপরের বর্ণিত ক্ষমতা তৈরি করার চেষ্টা করছি। আমি তাদের একটি কী কী সংজ্ঞায়িত করতে, প্রয়োজনে এটি আপডেট করতে এবং ট্র্যাকিনে চালিয়ে যেতে চাই, তাদের জন্য স্প্রেডশিটের বিন্যাসের নিয়মাবলী আমার কাছে আবার না লিখেই রাখুন।

--- হালনাগাদ ---

সুতরাং আমি আমার মূল অনুরোধ সম্পর্কে কিছুটা অস্পষ্ট বলে মনে করি। আমাকে আবার একটি চিত্র দিয়ে চেষ্টা করুন।

এক্সেল স্ক্রিনশট

চিত্রটি বামদিকে "কী" দেখায়, যেখানে কীবোর্ড এবং মাউস ইনপুট ব্যবহার করে মান এবং শৈলী সংজ্ঞায়িত করা হয়। ডানদিকে, আপনি কীটি মেলে সেই ডেটাটি ফর্ম্যাট করতে হবে।

সুতরাং আমি যদি ডেটা অঞ্চলে একটি ঘরে একটি "সি" টাইপ করি তবে এটি নীল-ব্যাক হওয়া উচিত। তদ্ব্যতীত, আমি যদি বেগুনি রঙের পটভূমির জন্য কীতে "সি" এর ফর্ম্যাটিংটি পরিবর্তন করি তবে সমস্ত "সি" কোষ নীল থেকে বেগুনিতে বদলে যাবে। আরও উন্মত্ততার জন্য, আমি যদি কীটিতে আরও যুক্ত করি (হলুদ ব্যাকগ্রাউন্ড সহ "ডি" বলুন) তবে কোনও "ডি" কোষ মেলানোর জন্য স্টাইল করা হবে; আমি যদি কোনও কী এন্ট্রি সরিয়ে ফেলি, তবে ডেটা অঞ্চলে মানের মানগুলি ডিফল্ট স্টাইলিংয়ে ফিরে যেতে হবে।

So. এটা কি আরও পরিষ্কার? এটি কি সম্পূর্ণ বা আংশিকভাবে সম্ভব? এর জন্য আমাকে শর্তসাপেক্ষ বিন্যাস ব্যবহার করতে হবে না; আসলে, এই মুহুর্তে আমার সন্দেহ হয় আমার সম্ভবত করা উচিত নয়। তবে আমি যে কোনও পদ্ধতির জন্য উন্মুক্ত!


স্ট্যাকওভারফ্লোতে ভিবিএ শর্তসাপেক্ষ বিন্যাস সংক্রান্ত প্রশ্নগুলি একবার দেখুন। আপনার যা প্রয়োজন তা দেওয়ার জন্য এখানে পর্যাপ্ত উদাহরণ থাকতে হবে: stackoverflow.com/search?q=vba+ শর্তাধীন ++ ফর্ম্যাটিং
রাইস গিবসন

উত্তর:


3

এটি D1: D9- এর কক্ষগুলির জন্য শর্ত নির্ধারণ করতে A1 তে কোষ ব্যবহার করে - আপনার প্রয়োজন অনুসারে রেঞ্জগুলি পরিবর্তন করে:

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

If Target.Address = "$A$1" and Sh.Name="Sheet1" Then
    Sheets(1).Range("D1:D9").FormatConditions(1).Font.Color = Target.Font.Color
    Sheets(1).Range("D1:D9").FormatConditions(1).Interior.Color = Target.Interior.Color
End If

End Sub

রঙ পরিবর্তন করার পরে, আপনি তারপর করতে হবে পরিবর্তন এটা সম্পাদনা করে সেল এবং Enter টিপে (তাই পরিবর্তন ঘটনার সূত্রপাত হয়)
বিন্যাস অবস্থার অর্ডার নিয়ম প্রয়োগ করা হয় দ্বারা আদেশ হয়। প্রয়োগ করা যেতে পারে এমন আরও অনেক পরিবর্তন রয়েছে, কেবল .FormatConditions(1).Whatever = Target.Whateverকোডে আরও একটি যুক্ত করুন

এই কোডটি কোনও শর্ত সেট আপ করে না, এটি কেবল সেখানে থাকা একটি (গুলি) পরিবর্তন করবে। শর্তগুলি স্ক্রিনে প্রদর্শিত নিয়মে ক্রমযুক্ত

আপনি যদি শর্তযুক্ত বিন্যাস ব্যবহার করতে না চান এবং কেবলমাত্র ঘরগুলি রঙ করতে চান তবে আপনি প্রতিটি ঘরে এইভাবে লুপ করতে পারেন:

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

If Intersect(Target, Range("A:A")) Is Nothing Or Sh.Name <> "Sheet1" Then Exit Sub
' exit if not in key range (formatting key is A:A on sheet1
If VarType(Target) > vbArray Then Exit Sub
' if multiple cells are changed at once, then exit, as i'm not going to fight with multi cell change

Dim TargetRange As Range
Dim lCell As Object

Set TargetRange = Sh.Range("D1:D9")
' changing cells in this area

For Each lCell In TargetRange.Cells
    If lCell.Value = Target.Value Then
    ' only change cells that match the edited cell
        lCell.Font.Color = Target.Font.Color
        lCell.Interior.Color = Target.Interior.Color
        ' copy whatever you feel needs to be copied
    End If
Next

End Sub

এটি সবচেয়ে প্রতিশ্রুতিবদ্ধ দেখাচ্ছে, শন — ধন্যবাদ! আমি যত তাড়াতাড়ি সম্ভব এটি চেষ্টা করে নেব এবং ফলাফলগুলি (এবং, আশাকরি, একটি উত্সাহ / পরীক্ষা) দিয়ে ফিরে রিপোর্ট করব।
এরিক এ। মায়ার

দুর্ভাগ্যক্রমে আমি এটি কাজ করতে পারি না: প্রথমে $ A $ 1 এ যে কোনও পরিবর্তন আমাকে একটি "ত্রুটি 9 সাবস্ক্রিপ্টের সীমা ছাড়িয়েছে" পেয়েছিল এবং এখন আমি কোনও ত্রুটি বা পরিবর্তনগুলি ট্রিগার করতে পারি না। যদি আমি "ব্যক্তিগত" সরান তবে ম্যাক্রো এখনও ম্যাক্রো তালিকায় প্রদর্শিত হচ্ছে না, তাই আমি এখনও ত্রুটি পেয়েছি কি না তা দেখার জন্য আমি নিজে এটি চালাতে পারি না। আমি ভিবিএ এবং ম্যাক্রোতে বেশ সবুজ, তাই এটি সহজেই সম্ভব আমি বোবা কিছু করছি তবে সহজ ম্যাক্রোগুলি ঠিকঠাক বলে মনে হচ্ছে। কিন্ডা স্ট্যাম্পড — সরি!
এরিক এ। মায়ার

ফলোআপ: আমার প্রথম শীটটি আসলে "শীট 1" নামে পরিচিত (আমি এটি পরিবর্তন করি নি)। আমি প্রদত্ত ভিবিএকে (জেনারেল) অধীনে শীট 1 এর কোড উইন্ডোতে সরাসরি অনুলিপি করে আটকিয়েছি। এর পরে একটি নতুন লাইন রয়েছে End Sub। আমি ওএস এক্স এক্সেল 2011 ব্যবহার করছি
এরিক এ। মায়ার

এই কোডটি ওয়ার্কবুকে যাবে - আপনার প্রকল্প উইন্ডোটির মডিউল অংশের ঠিক উপরে দেখুন (যেখানে এটি Microsoft Excel Objects'পত্রক 1', 'শিট 2' ইত্যাদি অনুসরণ করবে) ThisWorkbook
শেষটিটি

ঠিক আছে, এটি সেখানে রাখা (শীট 1 এর পরিবর্তে; ধন্যবাদ!) আমাকে ত্রুটিটি ফিরে পেয়েছে: "রান-টাইম ত্রুটি 9: সাবস্ক্রিপ্টের সীমা ছাড়াই"। আমি যখন "ডিবাগ" হিট করি তখন তা লাইনটি হাইলাইট করে Sheets(1).Range("D1:D9").FormatConditions(1).Font.Color = Target.Font.Color
এরিক এ। মায়ার

0

এখানে শন কী করেছে তার একটি বর্ধিতাংশ (কেবলমাত্র সাবটির অভ্যন্তর দেখানো):

If Intersect(Target, Range("A:G")) Is Nothing Or Sh.Name <> "Sheet3" Then Exit Sub
' exit if not in key range (formatting key is A:A on sheet1
If VarType(Target) > vbArray Then Exit Sub
' if multiple cells are changed at once, then exit, as i'm not going to fight with multi cell change

Dim KeyRange As Range
Dim TargetRange As Range
Dim lCell As Object
Dim kCell As Object

Set KeyRange = Sh.Range("A1:A10")
' formatting key is here
Set TargetRange = Sh.Range("D1:F9")
' changing cells in this area

For Each kCell In KeyRange.Cells
 If kCell.Value <> "" Then
  For Each lCell In TargetRange.Cells
    If lCell.Value = kCell.Value Then
    ' only change cells that match the edited cell
        lCell.Font.Color = kCell.Font.Color
        lCell.Interior.Color = kCell.Interior.Color
        ' copy whatever you feel needs to be copied
    End If
  Next
  End If
Next
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.