人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

EXCELで、下記のような変換を、関数等で自動的に行うことはできるでしょうか?アドバイスよろしくお願いします。

【A】 【B】
1,3,7,12,13 →→ 1010001000011

●質問者: ahsodik
●カテゴリ:コンピュータ
✍キーワード:Excel アドバイス 自動 関数
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● きゃづみぃ
●10ポイント

A1に 1,3,7,12,13と入っているとして

=if(A1="1,3,7,12,13","1010001000011","")

1,3,7,12,13ならば 1010001000011を 返すようにします。

ただ単に2進数にしたいのならば DEC2BIN というのでできますが

セットアップ プログラムを実行して分析ツールを組み込み その分析ツールを登録しないとダメです。

◎質問者からの返答

今回の場合、1,3,7,12,13部分の数列は、配列、個数が不規則なものを想定していました。説明足らずで申し訳ありません!また、10進数をそのまま2進数に置き換えというわけではないので、ダイレクトにDEC2BINは使えませんが、応用できそうですね。ありがとうございました。


2 ● kaiton
●30ポイント

A列にデータがあって、B列に一発で計算する方法ではないのですが

  1. A列で[データ]・[区切り位置]で
  2. 「カンマやタブ...」にチェックで[次へ]
  3. 「カンマ」にチェックで[完了]

これで、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の知識に乏しいので、関数の応用で計算できれば、非常にうれしいです。データ個数の部分がクリアできればお教えいただいたもの応用し置換できそうですよね。ありがとうございます。


3 ● きゃづみぃ
●25ポイント

それぞれの位置で 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にあまり詳しくないので、少し事前に勉強しなければなりませんが、お教えいただいたものやってみたいとおもいます。ありがとうございます!


4 ● talepanda
●25ポイント

ワークシート関数をつくるのでよければ

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とマクロの部分参照させていただき、なんとかやってみたいとおもいます。ありがとうございました!

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ