কিভাবে 0 এবং 1 এর সমস্ত সমন্বয়গুলির সাথে একটি টেবিল তৈরি করবেন


15

এক্সেল ইন, আমি 12 স্পেস জন্য 1 এবং 0 সব সমন্বয় সঙ্গে একটি টেবিল জেনারেট করতে হবে।

1 1 1 1 1 1 1 1 1 1 1 1

0 1 1 1 1 1 1 1 1 1 1 1

0 0 1 1 1 1 1 1 1 1 1 1

0 0 0 1 1 1 1 1 1 1 1 1

এবং তাই এবং তাই ঘোষণা, যেমন সব সমন্বয় পেয়ে

0 1 0 1 0 1 0 1 0 1 0 1

কিভাবে আমি এটি করতে পারব?


এক্সেলের কোন সংস্করণ আপনি ব্যবহার করেন?
Máté Juhász


1
তিনি বাইনারি নম্বরটি উচ্চ-ক্রমানুসার এবং নিম্ন-অর্ডার অংশে বিভক্ত করতে পারেন, তারপরে দুটি অংশকে একত্রিত করতে কনস্যাটেনেট ব্যবহার করুন।
Twisty Impersonator

8
আপনার পছন্দসই আউটপুট উপস্থাপনা থেকে, আমি প্রতিটি ডিজিট একটি পৃথক কোষ হতে হবে এবং এক স্ট্রিং না হওয়া উচিত?
Baldrickk

4
ভবিষ্যতের রেফারেন্সের জন্য, স্ট্যাক এক্সচেঞ্জে লোকেদের ধন্যবাদ দেওয়ার উপায়টি ▲ বাটন ব্যবহার করছে। আপনার জন্য যে উত্তরটি কাজ করেছেন (এবং সঠিক ফলাফল দিয়েছেন), সেটি ✔ বোতামটি ব্যবহার করুন। যদি একাধিক উত্তর কাজ করে, আপনি সেরা পছন্দ করেন এমনটি চয়ন করুন।
wizzwizz4

উত্তর:


27

কারণ 2 ^ 12 = 4096, আপনার 4096 টি কোষ দরকার (12 টি বিট জন্য 12)।

মূলত, আপনি এই কমান্ডটি A1 থেকে A4096 এ রাখেন:

=Right("00000000000" & Dec2Bin(Row()-1),12)

এটা হবে, কিন্তু এটি শুধুমাত্র 0 ... 511 (9 বিট) এর জন্য কাজ করে। তাই আমরা একটি কৌশল প্রয়োগ করি: আমরা সংখ্যাটি 3 বিট এবং 9 বিট অংশে বিভক্ত করে আলাদাভাবে দুটি স্ট্রিং গণনা করি, তারপর তাদের সংহত করে।

তাই আপনার আছে:

=RIGHT("00" & DEC2BIN((ROW()-1)/512),3) & RIGHT("00000000" & DEC2BIN(MOD((ROW()-1),512)),9)

সম্পাদনা: আমি সংখ্যা আর্গুমেন্ট ঐচ্ছিক সংখ্যা সচেতন ছিল না। এটি ব্যবহার করে এই ফাংশন দিতে হবে:

=DEC2BIN((ROW()-1)/512,3) & DEC2BIN(MOD((ROW()-1),512),9)

A1 থেকে A4096 এ এটি রাখুন।

সম্পাদনা 2: লুই ভিএন ফক এর মন্তব্য অনুযায়ী, এটি সম্ভব যে OP প্রতিটি 12 বাইনারি সংখ্যার সাথে প্রতিটি কলাম চেয়েছিল। এই ক্ষেত্রে, রাখা

=MID( DEC2BIN((ROW()-1)/512,3) & DEC2BIN(MOD((ROW()-1),512),9) ,COL(),1)

সমস্ত কোষ A1 থেকে এল 4096।


22

শুধু কপি পেস্ট ভিতরে নিচের সূত্র A1:

=MOD(QUOTIENT(ROW()-1,2^(COLUMN()-1)),2)

তারপর টেনে আনুন L4096

Screenshot

সূত্রটি একটি সংখ্যাটির nth বিট বের করে (n> gt; = 0): সংখ্যাটি পূর্ণসংখ্যা 2 ^ n দ্বারা বিভক্ত, তারপর মডুলাস ২ গণনা করুন।


9

প্রথমে স্ট্যান্ডার্ড মডিউলে নিম্নলিখিত ব্যবহারকারী নির্ধারিত ফাংশনটি প্রবেশ করান:

Public Function BigBinary(r As Range) As String
    Dim addy As String, s1 As String, s2 As String

    addy = r.Address(0, 0)
    s1 = "=DEC2BIN(INT(A1/2^27),9)&DEC2BIN(INT(MOD(A1,2^27)/2^18),9)&DEC2BIN(INT(MOD(A1,2^18)/2^9),9)&DEC2BIN(MOD(A1,2^9),9)"
    s1 = Replace(s1, "A1", addy)
    s = Evaluate(s1)
    BigBinary = s
End Function

এটি 36 "বিট" এর একটি স্ট্রিং প্রদান করে। তারপর মধ্যে ক 1 প্রবেশ করান:

=ROW()-1

এবং মাধ্যমে কপি A4096

মধ্যে খ 1 প্রবেশ করান:

=RIGHT(bigbinary(A1),12)

এবং মাধ্যমে কপি B4096 :

demo

ব্যবহারকারী নির্ধারিত ফাংশন (UDFs) ইনস্টল করা এবং ব্যবহার করা খুব সহজ:

  1. অল্টার - F11 VBE উইন্ডো এনেছে
  2. অল্টার - আমি , অল্টার - এম একটি তাজা মডিউল খোলে
  3. স্টাফ পেস্ট করুন এবং ভিবিই উইন্ডো বন্ধ করুন

আপনি যদি কার্যপুস্তিকাটি সংরক্ষণ করেন তবে ইউডিএফ এটির সাথে সংরক্ষণ করা হবে। 2003 এর পরে আপনি যদি এক্সেলের একটি সংস্করণ ব্যবহার করেন তবে আপনাকে অবশ্যই সংরক্ষণ করতে হবে .xlsx এর পরিবর্তে .xlsm ফাইলটি

ইউডিএফ অপসারণ করতে:

  1. উপরে হিসাবে VBE উইন্ডো আনতে
  2. কোড পরিষ্কার করুন
  3. VBE উইন্ডো বন্ধ করুন

এক্সেল থেকে ইউডিএফ ব্যবহার করতে:

=myfunction(A1)

সাধারণভাবে ম্যাক্রো সম্পর্কে আরো জানতে, দেখুন:

http://www.mvps.org/dmcritchie/excel/getstarted.htm

এবং

http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx

এবং UDFs এ সুনির্দিষ্ট জন্য, দেখুন:

http://www.cpearson.com/excel/WritingFunctionsInVBA.aspx

এই কাজ করার জন্য ম্যাক্রো সক্রিয় করা আবশ্যক!


অবশ্যই এক ব্যবহার করতে পারে =RIGHT(bigbinary(ROW()-1),12)?
wizzwizz4

@ wizzwizz4 আপনি সামান্য পরিবর্তন সঙ্গে ... সঠিক ইউডিএফ ()
Gary's Student

আমি কেবল ম্যাক্রোটি পড়েছি এবং লক্ষ্য করেছি যে এটি অতিমাত্রায় আছে - আপনি কেবলমাত্র বাক্সে সূত্রটি পেস্ট করতে পারেন এবং তারপর সমস্ত রেফারেন্সগুলি পরিবর্তন করতে Excel এর ক্লিক / ড্র্যাগ কার্যকারিতাটি ব্যবহার করতে পারেন - অথবা আরও ভাল, কেবলমাত্র ব্যবহার করুন ROW() - 1 পরিবর্তে একটি কোষ রেফারেন্স। ম্যাক্রোগুলির সাথে একটি ফাইলটিতে এটি সূক্ষ্ম, তবে এটির মধ্যে একটিতে একটি বিরক্তিকর এবং ভীতিকর পপআপ তৈরি করে।
wizzwizz4

1
@ wizzwizz4 আমি এটা ব্যবহার করেছিলাম ইউডিএফ () কারণ আমি ইতিমধ্যে আমার ভিবিএ টুলবক্সে এটি ছিল
Gary's Student

3

1 থেকে 4096 পর্যন্ত সমস্ত সারির জন্য A থেকে L পর্যন্ত প্রতিটি ঘরতে নিচের সূত্রটি রাখুন

=IF(MOD(ROW() - 1, 2^(13 - COLUMN())) < 2^(12 - COLUMN()), 0, 1)

আপনি একটি স্ট্রিং মধ্যে পুরো জিনিস চান স্পেস সঙ্গে আপনি কি জিজ্ঞাসা মত, শেষ কলামে এই রাখা

=A1 & " " & B1 & " " & C1 & " " & D1 & " " & E1 & " " & F1 & " " & G1 & " " & H1 & " " & I1 & " " & J1 & " " & K1 & " " & L1

এবং A4096: L4096 পর্যন্ত সমস্ত পথ টেনে আনুন

সাধারণ সমাধানের জন্য, কিছু কোষের সংখ্যা বিট করুন, যেমন Z1, বা নামযুক্ত কোষ NumOfBits এবং নিম্নলিখিত সূত্র ব্যবহার করুন

=IF(MOD(ROW() - 1, 2^(NumOfBits + 1 - COLUMN())) < 2^(NumOfBits - COLUMN()), 0, 1)

অপ্টিমাইজড সংস্করণ:

=IF(BITAND(ROW() - 1, BITLSHIFT(1, 13 - COLUMN()) - 1) < BITLSHIFT(1, 12 - COLUMN()), 0, 1)

=IF(BITAND(ROW() - 1, BITLSHIFT(1, NumOfBits + 1 - COLUMN()) - 1) < BITLSHIFT(1, NumOfBits - COLUMN()), 0, 1)

ব্যাখ্যা:

যদি আমরা সারি থেকে নীচের সারিতে সমস্ত বাইনারি উপস্থাপনা লিখি, nth-bit এর ফ্লিপিং / টগলিং চক্র (lsb থেকে গণনা) 2 হয় এন । প্রতিটি চক্র প্রথম অর্ধ (0 থেকে 2 এন -1 -1) 0 হবে এবং শেষ অর্ধ হবে 1. উদাহরণস্বরূপ lsb (ডান থেকে প্রথম বিট) প্রতি 2 বিকল্প হবে 1-1 = 1 বিট, দ্বিতীয় বিট প্রতি 2 টগল হবে 2-1 = 2 বিট ...

ফলস্বরূপ আমরা মডুলো ২ নেব এন চক্রের সংখ্যা বর্তমান অবস্থানে পেতে হলে এটি 2 এর কম এন -1 এটি একটি শূন্য বিট, অন্যথায় এটি এক।


3

আমি ব্যবহার করেছি অন্য উপায়:

  • থেকে পূরণ করুন A1 থেকে L1 জিরো সঙ্গে
  • মধ্যে A2 লেখা =1-A1
  • মধ্যে B2 লেখা =IF( AND( A1=1, A2=0), 1-B1, B1)
  • কপি B2 সূত্র C2:L2
  • সারি অনুলিপি করুন A2:L2 সারি সূত্র 3:4096

এই প্রথম কলামে অন্তত গুরুত্বপূর্ণ বিট, যাতে সব বাইনারি স্ট্রিং উত্পাদন করে। শেষ সারি (4096) সব হয়।

এই উপর নির্ভর করে না ROW() (তাই এটি অবাধে সরানো যেতে পারে), আপনি সরাসরি দৈর্ঘ্য বাড়িয়ে তুলতে পারেন এবং এটি অ-বাইনারি স্ট্রিংগুলিকে সাধারণীকরণ করতে সহজতর। এটি LibreOffice Calc এর সাথেও কাজ করে।


1

যেহেতু আপনি যা খুঁজছেন তা হ'ল প্রতি 1২ ডিজিটের বাইনারি নম্বরটি আপনার সেরা বিটি 0 থেকে 4095 (2 ^ 1২-1) থেকে প্রতিটি নম্বরে "DEC2BIN" ফাংশনটি ব্যবহার করা হয়। দুর্ভাগ্যক্রমে DEC2BIN শুধুমাত্র 8 ডিজিট পর্যন্ত কাজ করে তাই চূড়ান্ত সূত্রটি একটু জটিল মনে হয় কারণ এটি কনক্যাটেনেশনের:

 =DEC2BIN(ROUNDDOWN(A1/256,0),4)&DEC2BIN(A1-256*ROUNDDOWN(A1/256,0), 8)

DEC2BIN নম্বর রূপান্তর এবং আপনি আউটপুট করতে চান সংখ্যা সংখ্যা লাগে। আমি 4 পেতে 8 এবং 8 পেতে পারি। প্রথম 4 টি সংখ্যা সর্বোচ্চ মান পর্যন্ত স্থানান্তরিত করতে আমি 256 (2 ^ 8) ভাগ করে নেব এবং অন্যান্য নিম্ন মানের সংখ্যাগুলিকে উপেক্ষা করতে রাউন্ড ডাউন করব। নিম্ন মান সংখ্যার জন্য এই মানটি হ্রাস করুন যাতে তারা গত 255 গণনা চালিয়ে যেতে পারে।

বাইনারি রূপান্তর এবং বিট পরিবর্তনের জন্য দশমিক অনুসন্ধান করুন এটি কিভাবে কাজ করে।


1
@ হেরবের উত্তর তুলনায় চমৎকার কাজ "কোড গল্ফিং" (ছোট পাঠ্য তৈরি করা), যদিও এটি আপনাকে হার্ড-কোড A1 বলে মনে করে যেখানে সে আরও বেশি নমনীয় ROW () ব্যবহার করে। কেন তিনি 511 এর মাধ্যমে কাজ করে বলেছিলেন তবে আপনি 255 বলছেন। আপনি কি এটির মধ্যে একটি, নাকি এটি Excel এর বিভিন্ন সংস্করণগুলির মধ্যে একটি পার্থক্য?
TOOGAM

পরিবর্তে ROUNDDOWN(A1/256,0) আপনি শুধু ব্যবহার করতে পারেন QUOTIENT(A1, 256), অথবা আরও ভাল BITRSHIFT(A1, 8)। পরের অংশ এছাড়াও প্রতিস্থাপিত করা যাবে BITAND অথবা MOD
phuclv

-1

একটি উত্তর যা এক্সেলের বাইরে তথ্য তৈরি করে, কিন্তু একটি .csv তৈরি করে যা এক্সেলের টেবিলে পেতে খোলা যায়।

এটি পাইথন ব্যবহার করে, তবে শেল ভাষাতেও এটি করা যেতে পারে। এটি python ইনস্টল করা হলে cmd.exe এ এটি চালান।

python -c "for i in range(0,2**12): print (','.join((j for j in '{:b}'.format(i).zfill(12))))" > binary.csv

এটি একটি ফাইল (বাইনারি.csv) তৈরি করে যা পছন্দসই সামগ্রী ধারণ করে, পৃথক কোষগুলির প্রতিটি সংখ্যা (আমার মনে হয়) প্রশ্ন থেকে পছন্দসই হয়।

ব্যাখ্যা:

python -c                    < call python passing in a string for the program to run
for i in range(0,2**12):     < for each value from 0 to 12 bits
print (                      < print...
','.join(                    < comma separated...
(j for j in                  < each character from...
'{:b}'.format(i)             < binary representation of current value
.zfill(12))))"               < padded with '0' to length 12
> binary.csv                 < and output to 'binary.csv'

4
আমি ডাউন ভোটার নই, কিন্তু "এক্সেল ইন, আমি জেনারেট করতে হবে ..."। এই এক্সেল হয় না। কোনও CSV আমদানি করা এবং যেকোন সময় আপনি এটি সংশোধন করতে চান (যেমন আরো / কম সারি) সঠিক জায়গায় সেল কপি করা একটি ব্যথা হবে।
Tom Carpenter

এটি পাইথন & lt; 3 কিন্তু gt; = 2.3। ফরওয়ার্ড-সামঞ্জস্যের জন্য, যাতে বন্ধনী যোগ করুন যাতে print কীওয়ার্ডকে ফাংশন বলে মনে করা হয় - এভাবে এটি পাইথন 2.3+ এবং পাইথন 3.0.0+ এর সাথে সামঞ্জস্যপূর্ণ হবে
wizzwizz4
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.