【A】 【B】
1,3,7,12,13 →→ 1010001000011
A1に 1,3,7,12,13と入っているとして
=if(A1="1,3,7,12,13","1010001000011","")
1,3,7,12,13ならば 1010001000011を 返すようにします。
ただ単に2進数にしたいのならば DEC2BIN というのでできますが
セットアップ プログラムを実行して分析ツールを組み込み その分析ツールを登録しないとダメです。
A列にデータがあって、B列に一発で計算する方法ではないのですが
これで、A列からE列に1,3,7,12,13のようになると思います。
F1=10^-A1 でJ列までコピー
K1=TEXT(SUM(F1:J1)*10^E1,REPT("0",E1))
で"1010001000011"が求められました。
あたりの情報があれば、式や方法が変わってきます。
ありあがとうございます。
データは最大18桁で、データ個数は固定でないものになります(変動します)。「2,3,7,12,13」なら 「0110001000011」でOKです。
私自身が勉強不足でVBAの知識に乏しいので、関数の応用で計算できれば、非常にうれしいです。データ個数の部分がクリアできればお教えいただいたもの応用し置換できそうですよね。ありがとうございます。
それぞれの位置で 1にするということですね。
VBAでないと ちょっと難しいです。
標準モジュールに
Function henkan(a As String) As String
Dim f As String
Dim e As String
c = ""
e = "0"
For b = 1 To Len(a)
d = Mid(a, b, 1)
If d = "," Then
f = String(Int(c) - 1, "0") & "1"
If Len(f) > Len(e) Then
e = gattai(e & String(Len(f) - Len(e), "0"), f)
Else
e = gattai(e, f & String(Len(e) - Len(f), "0"))
End If
c = ""
Else
c = c & d
End If
Next b
f = String(Int(c) - 1, "0") & "1"
If Len(f) > Len(e) Then
e = gattai(e & String(Len(f) - Len(e), "0"), f)
Else
e = gattai(e, f & String(Len(e) - Len(f), "0"))
End If
henkan = e
End Function
Function gattai(aa As String, bb As String) As String
cc = ""
For ai = 1 To Len(aa)
If Mid(aa, ai, 1) = "1" Or Mid(bb, ai, 1) = "1" Then
cc = cc & "1"
Else
cc = cc & "0"
End If
Next ai
gattai = cc
End Function
といれて セルのほうは
=henkan("1,3,7,12,13")
とすればいいです。
やはり、VBAを使わなければ難しいのですね。ご丁寧に解説いただきましてありがとうございます。VBAにあまり詳しくないので、少し事前に勉強しなければなりませんが、お教えいただいたものやってみたいとおもいます。ありがとうございます!
ワークシート関数をつくるのでよければ
Function TR(x) L = Application.WorksheetFunction.Rept("0", Right(x, Len(x) - InStrRev(x, ","))) N = Split(x, ",") For Each i In N L = Application.WorksheetFunction.Replace(L, i, 1, "1") Next TR = L End Function
ワークシート関数の作り方は、
http://www.atmarkit.co.jp/fwin2k/win2ktips/437wsfunc/wsfunc.html
VBAでの計算ですね、ありがとうございます。私自身が勉強不足でVBAに詳しくないので、お教えいただいたURLとマクロの部分参照させていただき、なんとかやってみたいとおもいます。ありがとうございました!
今回の場合、1,3,7,12,13部分の数列は、配列、個数が不規則なものを想定していました。説明足らずで申し訳ありません!また、10進数をそのまま2進数に置き換えというわけではないので、ダイレクトにDEC2BINは使えませんが、応用できそうですね。ありがとうございました。