জটিল স্ট্রিং থেকে সংখ্যাটি যদি তা প্রদত্ত পরিসরে পড়ে তবে তা বের করুন


4

আমার একটি এক্সেল সূত্র (বা ভিবিএ ম্যাক্রো) দরকার যা আমাকে স্ট্রিং থেকে কোনও মান বের করতে দেয়। স্ট্রিং শব্দের ক্রম, ফাঁক দিয়ে পৃথক, একটি একক ঘরে। আমি শব্দটি (একটি বাইকের আকারের প্রতিনিধিত্বকারী) চাই যা কোনওটিই হোক

  • একটি সংখ্যা (সম্ভবত একটি পূর্ণসংখ্যা, তবে এটি নির্দিষ্ট করা হয়নি) 47 এবং 60 এর মধ্যে (বা কিছু অন্যান্য পরিসীমা, সম্ভবত গতিশীলভাবে নির্দিষ্ট করা যেতে পারে), বা
  • "এসএম", "মেড" বা "এলজি" স্ট্রিংগুলির মধ্যে একটি।

আমি প্রত্যাশা করি যে স্ট্রিংয়ে ঠিক একটি যোগ্যতার শব্দ থাকবে, সুতরাং কোনও যুক্তিসঙ্গত ত্রুটি-পরিচালনার প্রতিক্রিয়া

  • কোন যোগ্যতা শব্দ, বা
  • একাধিক যোগ্যতা শব্দ

গ্রহণযোগ্য হবে। আকার স্ট্রিংয়ের বিভিন্ন পজিশনে থাকতে পারে। উদাহরণ:

Cervelo P2 এর 105 5800 56 '15                         সংখ্যা 56 কাঙ্ক্ষিত ফলাফল 
Cervelo P2 এর 105 54 6000 '15                         সংখ্যা 54 কাঙ্ক্ষিত ফলাফল হয় 
Cervelo P3 105 5800 60 '15                         সংখ্যা 60 কাঙ্ক্ষিত ফলাফল 
Cervelo P2 এর 105 5800 ছাঃ '15                         স্ট্রিং এসএম হ'ল কাঙ্ক্ষিত ফলাফল

আমি কেবল পুরো কথায় আগ্রহী তাই 58 ("5800" এর স্ট্রিং) যোগ্যতা অর্জন করে না।

এই মুহুর্তে আমি সরে যাচ্ছি '15এবং তারপরে শেষ দুটি অঙ্কটি বের করছি। তবে এই পদ্ধতিরটি কেবল তখনই কার্যকর হয় যখন বাইকের আকার শেষ মানের থেকে দ্বিতীয় হয়। যাইহোক, উপরে প্রদর্শিত হিসাবে, আকার আছে স্ট্রিং অন্যান্য অবস্থানের যেখানে ক্ষেত্রে।

এক্সেলের একটি সূত্র বা ভিবিএ ম্যাক্রো দিয়ে আমি কীভাবে এটি করতে পারি?


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

আপনার সাহায্যের জন্য ধন্যবাদ. প্রতিটি রেকর্ডের কেবলমাত্র একটি উপস্থিতি থাকবে
4'৩

একটি সংখ্যা 44 সীমার মধ্যে যে - 62. এই সাইকেল মাপ হয় - তাই যদি আমি এই পরিসীমা (44-62) সংজ্ঞায়িত করতে পারেন, সূত্র শুধুমাত্র প্রতিটি রেকর্ডের ধন্যবাদ ক্যারল জন্য এই সীমার মধ্যে এক নম্বর পাবেন
ক্যারল

তাহলে আপনি কি নিজের উদাহরণটি পরিষ্কার করতে পারবেন? বর্ণিত হিসাবে, 58 এবং 56 উভয়ই আপনার মানদণ্ড পূরণ করে। লোকেরা প্রয়োজনীয়তাগুলি পুরোপুরি না বুঝতে পারলে দরকারী উত্তর সরবরাহ করা শক্ত হয়ে যাবে।
ফিক্সার 1234

1
"আমি নিশ্চিত ... আমি কী ভুল করেছি তা নিশ্চিত নই।" গুরুতরভাবে? আমি আপনাকে পরিসীমাটি পরিষ্কার করতে বলেছিলাম, যেহেতু আপনি একাধিক মান নির্দিষ্ট করেছেন। আপনি কেবল প্রশ্নটিতে 47-60 এবং 47-62 উভয়ই রেখেছিলেন, তবে আপনি 44-62 (যা আপনি আগে একটি মন্তব্যে উল্লেখ করেছিলেন) প্রশ্নের সাথে যুক্ত করেছেন। (এছাড়াও, আপনি আজ একটি মন্তব্যে যে উদাহরণের ইনপুটগুলি দিয়েছেন (এবং প্রয়োজনীয় পছন্দসই ফলাফলগুলি) সেগুলি প্রশ্নের মধ্যে সম্পাদনা করা উচিত ছিল এবং আপনি যে মন্তব্যে প্রশ্নটি সম্পাদনা করেছেন ("আমি কী করব তা নিশ্চিত না পরবর্তী কী করা উচিত। আমিও আছি আমি কী ভুল করেছি তা নিশ্চিত নই। ") মন্তব্যগুলিতে পোস্ট করা উচিত ছিল (বা একেবারেই নয়)।… (চালানো)
স্কট

উত্তর:


5

আমি ভিবিএ ব্যবহার করে একটি সমাধান করেছি:

Public Function BikeSize(MinSize As Integer, MaxSize As Integer, datainput As String)
    Dim dataoutput() As Variant
    ReDim dataoutput(0)
    BikeSize = 0
    datasplitted = Split(datainput, " ")
    arraysize = UBound(datasplitted)
    j = 1
    For i = 0 To arraysize
        m = datasplitted(i)
        If m >= MinSize And m <= MaxSize Then
            ReDim Preserve dataoutput(j)
            dataoutput(j) = m
            j = j + 1
        End If
        If m = "sm" Or m = "med" Or m = "lg" Then
            ReDim Preserve dataoutput(j)
            dataoutput(j) = m
            j = j + 1
        End If
    Next i
    totalresults = UBound(dataoutput)
    Select Case totalresults
        Case 0
            BikeSize = 0
        Case 1
            BikeSize = dataoutput(totalresults)
        Case Else
            For i = 1 To totalresults
                wrongresult = wrongresult & dataoutput(i) & " - "
            Next i
            BikeSize = wrongresult
    End Select
End Function

আপনাকে ম্যাক্রোস / ভিজ্যুয়াল বেসিক খুলতে হবে মডিউলগুলিতে যেতে হবে>> মডিউল যুক্ত করুন এবং ডানদিকে কোডটি পেস্ট করুন (এছাড়াও দেখুন কিভাবে আমি এমএস অফিসে ভিবিএ যুক্ত করব? )

তারপরে যদি আপনার স্ট্রিংটি সেল 1 এ থাকে তবে সি 1 এ আপনার ন্যূনতম মান , ডি 1 এর উপর আপনার সর্বাধিক মান তারপরে বি 1 এ আপনি কেবল =BikeSize(C1,D1,A1)ফলাফল পেতে পারেন।

যদি স্ট্রিংয়ের সাথে মিলে যাওয়া নম্বর না থাকে এটি একটি শূন্য 0 আউটপুট করে ।

স্ট্রিংয়ের যদি একের বেশি সংখ্যক মিল থাকে তবে এটি ড্যাশ দ্বারা পৃথক সমস্ত মিলকে আউটপুট করে।

এছাড়া স্বীকার ছাঃ , মেড এবং এলজি


আপনার সাহায্যের জন্য ধন্যবাদ - আমি এটা চেষ্টা করুন এবং আপনাকে তা জানাবে, ক্যারল
ক্যারল

jcbermu - আপনার ভিবিএ সমাধান দুর্দান্ত কাজ করে। আপনি ফিরে পেতে বিলম্বের জন্য দুঃখিত। আমার কাছে বেশ কয়েকটি প্রশ্ন রয়েছে তবে আমি ফিক্সার 1234 থেকে একটি বার্তা পেয়েছি যে পোস্টটি বন্ধ রয়েছে। আমি এতে নতুন এবং এই পোস্টের স্থিতির বিষয়ে নিশ্চিত নই
ক্যারল

@ ক্যারল গ্রেট !!! আপনি কি জানতে চান?
jcbermu

jcbermu, সমাধানের জন্য অনেক ধন্যবাদ। প্রশ্নসমূহ 1) আপনি যেখানে 44-62 সীমা নির্দিষ্ট করেছেন, আমি কি দুটি সংলগ্ন কলামগুলিতে সেলগুলি উল্লেখ করতে পারি যাতে আমি স্প্রেডশিটে "বাইকসাইজ" ভিবিএ অনুলিপি করার সাথে সাথে পরিসরের নিম্ন ও হাইয়ের সুযোগ পেতে পারি। 2) আমি এই একই ভিবিএ প্রোগ্রামে এসএম, মেড, এলজিও বের করতে পারি? কখনও কখনও বাইকের আকার 54 বা 58, বা 48 এর পরিবর্তে এসএম, মেড, এলজি ব্যবহার করে প্রকাশ করা হয় .... অবশ্যই, আমি ভিবিএ প্রোগ্রামিং সম্পর্কে খুব কম জানি, তবে আপনাকে ধন্যবাদ, আমি শিখছি আপনার সাহায্যটি খুব প্রশংসিত এবং আপনার কীভাবে ভিবিএ প্রোগ্রামটি helpedোকানো যায় তার ব্যাখ্যা কীভাবে সত্যই সহায়তা করেছে - আমি কোথায় আপনার সমাধানকে রেট করব?
ক্যারল

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