কোনো নির্দিষ্ট সংখ্যার অবস্থানে 1 টি ধারণকারী কোনও ঘরটি মেলে এমন একটি অনুসন্ধান সরঞ্জাম সেট আপ করা হচ্ছে


1

আমি একটি অনুসন্ধান টুল আছে আমি এক্সেল মধ্যে উন্নয়নশীল। কলাম "ইইউ", আমার কোষ আছে, প্রতিটি 124 সংখ্যা একটি স্ট্রিং ধারণকারী। এই স্ট্রিং 0 এবং 1 এর গঠিত। আমার 1২4 টি বৈশিষ্ট্য রয়েছে যা 1 বা 0 টি তৈরি করে ... এবং ব্যবহারকারীরা 1,2,3,4,5 ইত্যাদি বৈশিষ্ট্য অনুসন্ধান করতে পারেন। সরলতার জন্য, ধরুন EU1 এর স্ট্রিং 0100100011 ... এবং আমি যে কোনও সেল সন্ধান করতে চাই যা 0100100000 বা সম্ভবত 0000100010 ইত্যাদি। অন্য কথায় আমি কোন নির্দিষ্ট সংখ্যার অবস্থানের একটি "1" ধারণকারী কোন স্ট্রিং খুঁজে পেতে চাই, সম্ভবত কয়েকটি সংখ্যার অবস্থানের মধ্যে 1 টি .......... উদাহরণ আমি এই তিনটি সমন্বয় যদি পরীক্ষা করতে চান .....

0000010000000001000000000000010010000010000000100000010010010000000000101100100000100000000000000000000000000000000000000100 0000000000001010001000000010010010010010000000100000010010010000000000100100100000100100000100000000000000000000000001000100 0000000000000110000010000010001001010000010000100000010010010000000000100100100001000100000100000000000000000000000001000100

এই অবস্থানে 1 আছে ......

1000000000000000000000000000000000000000000000000000000000000000000001000000000000000000001000100000000000000000000000000000

যদি অন্যান্য অবস্থানে 1 টি থাকে, তবে পরীক্ষার শর্তটি যদি 1 থাকে এবং পরীক্ষিত অবস্থানে সেই শূন্যটিতে শূন্য থাকে।


এটি অন্য উপায় নির্বাণ, এবং আরো বোধগম্য উদাহরণ ব্যবহার করে, আমার স্ট্রিং শুধুমাত্র পাঁচ অক্ষর দীর্ঘ যে জাহির করা, এবং যে আমার প্রথম পাঁচ স্ট্রিং হয়

EU1       10000
EU2       10001
EU3       11000 
EU4       11011
EU5       00001

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

উদাহরণস্বরূপ, প্রথম দুটি সংখ্যার স্ট্রিংগুলি সন্ধান করতে 1 গুলি (বাকি সম্পর্কে যত্ন করবেন না) আমি নির্দিষ্ট করতে চাই 11000 এবং স্ট্রিং ইইউ 3 এবং EU4 ম্যাচ পেতে। (এটি এমন বস্তুর জন্য একটি অনুসন্ধান উপস্থাপন করতে পারে একজন কৌণিক এবং বি Lue।) একটি অনুসন্ধান 10000 (যে সব বস্তু একজন কৌণিক) সব স্ট্রিং মেলে উচিত যার প্রথম সংখ্যা হয় 1, ইইউ 1, ইইউ ২, ইইউ 3 এবং ইইউ 4। 11100 (যে সব বস্তু একজন কৌণিক এবং বি লু এবং সি বিজ্ঞপ্তি) কোন মিল পাওয়া উচিত, কোন স্ট্রিং থাকে কারণ 1 তৃতীয় অঙ্কের জায়গায়। বিপরীতভাবে, 00000 সব স্ট্রিং মেলে উচিত, কারণ একটি সমস্ত-শূন্য অনুসন্ধান স্ট্রিং একটি ওয়াইল্ডকার্ড।

টেবিলের আকারে:

Search string:   11000       10000       11100       00000
                 ↓↓          ↓           ↓↓↓
EU1              10000     →  1  0000 10000 → 10000
EU2 10001 →  1  0001 10001 → 10001
EU3 →  11  000 →  1  1000 11000 → 11000
EU4 →  11  011 →  1  1011 11011 → 11011
EU5 00001 00001 00001 → 00001
                                        (কেউ না) (সব) 

আমি দুঃখিত আপনার তথ্য 128 অক্ষর দীর্ঘ। আপনার 128-অক্ষরের সমস্যাটির সমাধান সম্ভবত 8 বা 18 অক্ষরগুলির জন্যও কাজ করবে এবং এর বিপরীতে। আমি সুপারিশ করছি যে "সরলতার জন্য" আপনি আপনার সমস্যাটিকে স্কেল করুন যাতে আপনার স্ট্রিংগুলি এক লাইনে মাপসই হয় - আপনার প্রকৃত তথ্য আমার চোখকে আঘাত করে।
Scott

আমি 5 স্ট্রিং আছে। স্ট্রিং এ) = 10000, স্ট্রিং বি) = 10001, স্ট্রিং সি) = 11000 স্ট্রিং, ডি) = 11011, স্ট্রিং ই) = 00001। আমি একটি পরিবর্তনশীল এই স্ট্রিং প্রতিটি তুলনা করতে চান। সুতরাং যদি পরিবর্তনশীল A) = 11000 আমি স্ট্রিং সি এবং ডি স্ট্রিংয়ের একটি ম্যাচ পেতে পারি। যদি Var A) = 10000, স্ট্রিং A, B, C, এবং D তে যদি মিল থাকে তবে A = 11100, কোন মিল নেই, কোন স্ট্রিং নেই তৃতীয় ডিজিটের জায়গায় "1" থাকে। সুতরাং যেকোনো সময় একটি "1" পরিবর্তনশীলতে প্রদর্শিত হয় তবে স্ট্রিংটি 1 টি পাশাপাশি সমালোচনামূলক। যদি পরিবর্তনশীল A) = 00000 তারপর স্ট্রিংগুলি A, B, C, D, এবং E সমস্ত একটি মিল, যেমন ভেরিয়েবলের জিরোগুলি ওয়াইল্ডকার্ড হয়।
BearOnFire

উত্তর:


0

সরলতার জন্য, আমি আপনার তথ্য কলামে রাখি E, রো 2 শুরু। আমি সেল মধ্যে অনুসন্ধান স্ট্রিং করা D2। (অবশ্যই D2 এবং কলাম E টেক্সট হিসাবে বিন্যাস করা আবশ্যক, অথবা আপনি একটি একক উদ্ধৃতি টাইপ করতে হবে ( ' ) প্রতি নম্বর আগে।)

আমি এক্সেলের নেটিভ অনুসন্ধান ক্ষমতা ব্যবহার করার পদ্ধতিটি বেছে নিলাম। একটি সার্চ স্ট্রিং 11000 মানে আমরা মান খুঁজছেন যেখানে প্রথম সংখ্যা একটি 1, দ্বিতীয় সংখ্যা একটি 1, এবং তৃতীয় পঞ্চম অক্ষর মাধ্যমে কিছু হয়। যেমন আপনি বলেছেন, পরিবর্তনশীল (অনুসন্ধান স্ট্রিং) জিরোগুলি ওয়াইল্ডকার্ড।

এই ওয়াইল্ডকার্ড মান উপস্থাপনা হয় 11??? - তাই আমি সেল সেট D3 থেকে

=SUBSTITUTE(D2, "0", "?")

প্রশ্নটি কীভাবে ফলাফল উপস্থাপন করা উচিত তা নির্দিষ্ট করে নি। এক উপায়, কলাম প্রতিটি মান জন্য হবে E, এটা একটি ম্যাচ কিনা ইঙ্গিত। আমরা এটা করতে পারেন অনুসন্ধান প্রতিটি ing E ওয়াইল্ডকার্ড স্ট্রিং জন্য মান। যদি এটি পাওয়া যায়, SEARCH 1 প্রদান করে, অন্যথা এটি একটি ত্রুটি প্রদান করে। সুতরাং আমরা একটি উপযুক্ত পেতে পারেন TRUE অথবা FALSE নির্বাণ দ্বারা মান

=NOT(ISERROR(SEARCH($D$3, E2)))

মধ্যে F2, এবং সব আবরণ এটি নিচে টেনে আনতে E ডেটা। (মনে রাখবেন যে FIND ওয়াইল্ডকার্ড অক্ষর অনুমতি দেয় না।)

কিন্তু সূচকের তালিকা থাকতে আরও সুবিধাজনক হতে পারে মেলা মান। আমরা ব্যবহার করে যে পেতে পারেন MATCH কলাম অনুসন্ধান। আমি একটি কোষ 1 রাখুন G1 এবং

=MATCH($D$3, INDEX($E$2:$E$99, G1):$E$99, 0) + G1

সেল মধ্যে G2 (সমন্বয় 99 গুলি শেষ তথ্য সারি অনুসারে) এবং ড্র্যাগ / এই নিচে পূরণ করুন। এই ওয়াইল্ডকার্ড স্ট্রিং জন্য অনুসন্ধান (যা D3 ) মধ্যে E কলাম, আগের ম্যাচের বিন্দু থেকে শুরু। এই ফেরত সারি ম্যাচ সংখ্যা; যেমন, "স্ট্রিং ডি" ( 11011, কোষ যা E5 ), 5 হিসাবে রিপোর্ট করা হয়। যদি আপনি "স্ট্রিং ডি" চান 4 হিসাবে রিপোর্ট করা, এটি একটি সহজ সমন্বয়।

আপনার প্রস্তাবিত নমুনা ডেটাগুলির ফলাফল এখানে রয়েছে:

11000
10000
11100
00000

অবশ্যই কোষ D3 এবং G1 লুকানো হতে পারে। এবং, যদি আপনাকে সত্যিই 1 নম্বর সারিতে আপনার ডেটা শুরু করতে হয়, তবে এটির ব্যবস্থা করা যেতে পারে।

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


স্কট, এটা অসাধারণ যে আপনি একটি র্যান্ডম অপরিচিত সাহায্য করার জন্য এতো সময় কাটিয়েছেন। আমি আজ সকালে আমার টেবিলে বসে আছি-সব হাসি, কারণ আমি নিশ্চিত নই যে আমি এখানে রেজোলিউশন খুঁজে পাব। আমি সত্যিই আপনার সাহায্য প্রশংসা করি।
BearOnFire

আচ্ছা, যখন আমি আপনাকে জিজ্ঞেস করলাম প্রশ্নটি স্পষ্ট করে দিয়েছিলে; এটা আপনার ন্যায্যতা স্বীকার করে যে শুধুমাত্র ন্যায্য। আমি এটা আপনাকে সাহায্য করে খুশি। শুধু কৌতূহলের বাইরে, উত্তরটির কোন অংশটি আপনি ব্যবহার করছেন (কলাম F অথবা G )?
Scott

আমি কলাম F ব্যবহার করছি এমন সব সারি লুকানোর যা সত্যের ফলাফল দেয় না। আমি 154 ডিজিটের স্ট্রিং দিয়ে শেষ হলাম, তাই এটি অন্য কোন উপায়ে দুঃস্বপ্ন হতে পারে। চমৎকার কাজ!
BearOnFire

0

বলুন আমরা কলামে তথ্য আছে ই ইউ থেকে EU1 থেকে EU100 । আপনার প্যাটার্ন মিল ব্যবহার সঙ্গে কোষ খুঁজে পেতে:

Sub Finderr()
   For i = 1 To 100
      v = Cells(i, "EU").Text
      If Mid(v, 1, 1) = "1" And Mid(v, 70, 1) = "1" And Mid(v, 91, 1) = "1" Then
         MsgBox i
      End If
   Next i
End Sub

আউটপুট যা সারি ধারণকারী আউটপুট হবে।


তাই প্রতিটি অনুসন্ধান ব্যবহারকারী একটি কাস্টম স্ট্রিং প্রোগ্রাম প্রয়োজন হবে? ব্যবহারকারী যদি কোনও অবস্থান তালিকা পোস্ট করে (যেমন 1, 70, 91) পোস্ট করে তবে এটি আরও কার্যকর বলে মনে হয় এবং অনুসন্ধানটি তার থেকে প্রাপ্ত হয়। (সম্ভবত এটি নতুন এবং উন্নত সংস্করণ 2.0 অ্যাপ্লিকেশনের প্রদত্ত সংস্করণে উপলব্ধ।)
fixer1234

@ fixer1234 আমার কোডটি ইতিমধ্যে আপনার মন্তব্যের সাথে সামঞ্জস্যপূর্ণ।
Gary's Student

হ্যাঁ, আমি "অতিরিক্ত খরচ" ফ্রন্ট এন্ড উল্লেখ করছি যাতে পরীক্ষার স্ট্রিং হার্ড কোডেড (আপনার অ্যাপ্লিকেশনের বাণিজ্যিক সংস্করণ vs. বিনামূল্যের সংস্করণ) এর চেয়ে প্রয়োজনীয় হিসাবে নির্মিত হয়।
fixer1234
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.