• ベストアンサー

数値データの一括変換方法について

「EXCEL」または「ACCESS」でのデータ変換について質問です。 下記のような「0」と「1」からなる10桁の数値があり、 それを特定のルールに従い一括変換する方法があれば教えて下さい。 例(1))0000000000 →0 例(2))1111111111 →1|2|3|4|5|6|7|8|9|10 例(3))1010110000 →1|3|5|6 例(4))0000110010 →5|6|9 例(5))0000000001 →10 10桁の数値の左側から順に「1」になっていれば、その桁の数値に置き換える。(1桁目は「1」、3桁目は「3」、10桁目は「10」) また置き換えた数値が2個以上ある場合は、「|」の記号で区切る。 上記のような数値データが数万個あり、それらを一括で変換できる方法があれば教えて頂けると助かります。 お忙しい所 大変恐縮ではございますが、何卒宜しくお願い致します。    

質問者が選んだベストアンサー

  • ベストアンサー
  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.2

関数で対処するとして10桁の数値は数値としてではなく文字列となっている場合には次の式をB1セルに入力し、下方にオートフィルドラッグします。 数万行とのことであすからB1セルに式を入力した後でコピーし、その後に名前ボックスで10000行までならB1:B10000と入力します。これで10000行までが選択状態になりますので「貼り付け」をすればよいでしょう。 =IF(A1="","",IF(ISERROR(FIND(1,A1)),0,(IF(MID(A1,1,1)="1",1&"|","")&IF(MID(A1,2,1)="1",2&"|","")&IF(MID(A1,3,1)="1",3&"|","")&IF(MID(A1,4,1)="1",4&"|","")&IF(MID(A1,5,1)="1",5&"|","")&IF(MID(A1,6,1)="1",6&"|","")&IF(MID(A1,7,1)="1",7&"|","")&IF(MID(A1,8,1)="1",8&"|","")&IF(MID(A1,9,1)="1",9&"|","")&IF(MID(A1,10,1)="1",10,""))))

KTN1123
質問者

お礼

早速、上記関数をセルに貼り付けてみましたら思っていた通りの結果が得られました。 この度は、大変ありがとうございました。 また今後とも よろしくお願い致します。

その他の回答 (1)

  • nag0720
  • ベストアンサー率58% (1093/1860)
回答No.1

関数を作るしかないでしょ。 Function Henkan(ByVal S As String) As String Dim P As String Dim i As Integer P = "" For i = 1 To 10 If Mid(S, i, 1) = "1" Then If P = "" Then P = i Else P = P & "|" & i End If End If Next Henkan = P End Function

KTN1123
質問者

お礼

早々のご回答をありがとうございます。 上記関数を参考にさせて頂きます。 この度は、大変お手数お掛けいたしました。 また今後とも よろしくお願い致します。

関連するQ&A

専門家に質問してみよう