বিদ্যমান এক্সেল ফাইল থেকে একাধিক এন্ট্রি


0

আমাদের গ্রাহক আমাদের একটি এক্সেল ফাইল তালিকাভুক্ত ড্রাইভারের নাম এবং একটি বিনামূল্যে অঙ্কনের জন্য তারা প্রাপ্ত টিকিটের সংখ্যা সরবরাহ করে যেমন "বিল স্মিথ (পরবর্তী কলাম) 17 টিকিট

"বিল স্মিথ" এর জন্য এটি নেওয়া এবং এটির জন্য 17 টি পৃথক এন্ট্রি করার কোনও উপায় আছে যাতে আমরা সমস্ত 286 ড্রাইভারের জন্য মোট 5000 টি টিকিটের উপরের দিকে মুদ্রণ করতে পারি? কেউ পান 1, কারও 5, আরও কিছু ...

আমরা বর্তমানে চালকের নামগুলি প্রয়োজন অনুসারে ম্যানুয়ালি পুনরাবৃত্তি করছি।

আমরা এগুলিকে 2x3 অ্যাভেরি লেবেল টেমপ্লেটে একটি মেল মার্জ করে মুদ্রণ করে সেগুলি পরে আলাদা করে রাখি।


প্রশ্ন আমি কিভাবে এক্সেল সঙ্গে একাধিক সারি মধ্যে এক সারি বিভক্ত করেন? সম্পর্কিত দেখায়; আপনি সেখানে যে কোনও একটি উত্তর (মানিয়ে নিতে) সক্ষম করতে পারেন।
জি ম্যান

উত্তর:


0
  1. ফাইলটি এমনভাবে সংশোধন করুন যাতে এর নিম্নলিখিত বৈশিষ্ট্য থাকে:
    • কলাম এ: শিরোনামটি "নাম"। সমস্ত কক্ষে টিকিট দেওয়ার জন্য মানুষের নাম রয়েছে।
    • কলাম বি: শিরোনামটি "সংখ্যা" Number সমস্ত কক্ষে কলাম এ-তে একই সারিতে তালিকাবদ্ধ ব্যক্তিকে নির্ধারিত টিকিটের সংখ্যা রয়েছে। অন্য কোনও পাঠ্য অন্তর্ভুক্ত নেই।
    • "নাম" এবং "নম্বর" তথ্য সহ শীটটিতে অন্য কোনও ডেটা অন্তর্ভুক্ত নেই।
  2. "নাম" এবং "নম্বর" তথ্যযুক্ত শীটটি নির্বাচন করে, ফাইলটি সিএসভি হিসাবে সংরক্ষণ করুন (কমা বিস্মৃত)। এই উদাহরণের স্বার্থে, আমরা ফাইলের নামের জন্য OrigCSV.csv ব্যবহার করব।
  3. পাওয়ারশেল সেশনটি খুলুন এবং আপনি সবেমাত্র CSV থাকা ফোল্ডারে নেভিগেট করুন।
  4. নিম্নলিখিত কমান্ড চালান:
    • $x=ipcsv .\OrigCSV.csv;$x|%{for($y=1;$y-le$_.Number;$y++){$_.Name}}|Out-File NewCSV.csv
  5. NewCSV.csv খুলুন এবং নামগুলি যা চান তা ও নম্বরটিতে তালিকাভুক্ত যাচাই করুন।

আপনার যদি কেবল নামটি নকল করা ছাড়াও বেশি প্রয়োজন হয় তবে পাওয়ারশেলের মাধ্যমে এটি এখনও সম্ভব - আরও কিছুটা "আকর্ষণীয়"।

উপরে বর্ণিত কমান্ড লাইনের সংস্করণটি এখানে একটি প্রসারিত এবং মন্তব্য করা হয়েছে:

<#
    First set $x so that it contains everything in OrigCSV.csv.
    Each line of the CSV will be an array element within $x, with "Name" and "Number" properties according to their entry in the CSV.

    ipcsv is a built-in alias for Import-Csv
#>
$x=ipcsv .\OrigCSV.csv;
<#
    Next step is to put all the objects in $x through a ForEach-Object loop.

    % is a built-in alias for ForEach-Object.
#>
$x|%{
    <#
        Within ForEach-Object, we're starting a For loop.
        The loop definition starts with setting a counter, $y, to 1.
        Then, if $y is less than or equal to the current line item's "Number" property, the script block will execute.
        After the script block executes, it will increment $y by 1 and check the loop condition again.
        Once $y becomes greater than the current line item's "Number" property, the For loop will exit.
    #>
    for($y=1;$y-le$_.Number;$y++)
    {
        # This next line simply outputs the "Name" property of the current line item.
        $_.Name
    # After the For loop exits, the script will return to the ForEach-Object loop and proceed to put the next item into the For loop.
    }
# After ForEach-Object is done with its work, we pipe all of the output to Out-File so that the list gets written to a new CSV file.
}|Out-File NewCSV.csv

0

এখানে একটি ভিবিএ সমাধান রয়েছে। প্রথমে আপনার দুটি কলামে থাকা ডেটা নির্বাচন করুন। কলামের শিরোনাম থাকলে তা নির্বাচন করবেন না।

এরপরে, এই কোডটি একটি মডিউলে রাখুন এবং এটি সম্পাদন করুন। (এটি করার নির্দেশনার জন্য, এই পোস্টটি দেখুন ))

Sub TicketList()
'Two columns of drivers and ticket counts should be selected (no headers) before running this Sub.
Dim drivers() As Variant, output() As Variant, shtOut As Worksheet
Dim i As Long, j As Long, k As Long, scount As Integer
drivers = Selection.Value
'Set size of output array to match total number of tickets
ReDim output(1 To Application.WorksheetFunction.Sum(Selection), 1 To 1) As Variant
For i = LBound(drivers, 1) To UBound(drivers, 1)
    For j = 1 To drivers(i, 2)
        k = k + 1
        output(k, 1) = drivers(i, 1)
    Next j
Next i
'Place tickets on new sheet named "Driver Tickets #"
For Each sht In ThisWorkbook.Sheets
    If InStr(sht.Name, "Driver Tickets") > 0 Then scount = scount + 1
Next sht
Set shtOut = Sheets.Add
If scount = 0 Then
    shtOut.Name = "Driver Tickets"
Else
    shtOut.Name = "Driver Tickets " & CStr(scount + 1)
End If
'Print output on the new sheet
shtOut.Range("A1").Resize(UBound(output, 1), 1).Value = output
End Sub

এটি "ড্রাইভার টিকিট" নামে একটি নতুন শীটে টিকিটের জন্য নামের তালিকা তৈরি করবে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.