Excelでアンケート処理をしています。「0102030405060708101112131415」のように1つのセルに連続して入っている回答データを15セルに分けて空欄または1のフラグデータとしたいのですが、何か良い方法はないでしょうか。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2004/08/17 16:01:23
  • 終了:--

回答(9件)

id:noda073 No.1

noda073回答回数123ベストアンサー獲得回数02004/08/17 16:08:16

ポイント14pt

http://www.asahi-net.or.jp/~ef2o-inue/shiki/sub03_020_12.html

計算式(文字列から特定位置の文字を取り出す)

mid関数を使ったらどうでしょうか

id:kamino2

mid関数は分かります。もう少し具体的にお願いします。

2004/08/17 16:09:45
id:ohmix1 No.2

ohmix1回答回数235ベストアンサー獲得回数142004/08/17 16:18:09

ポイント14pt

http://www.asahi-net.or.jp/~ef2o-inue/shiki/sub03_020_12.html#

計算式(文字列から特定位置の文字を取り出す)

回答1のURLに具体例があると思うのですが、もっと具体的に言うと...

例: A1に15桁の文字列が入っている場合

1桁目を取得 ... =MID(A1,1,1)

2桁目を取得 ... =MID(A1,2,1)

3桁目を取得 ... =MID(A1,3,1)

4桁目を取得 ... =MID(A1,4,1)

5桁目を取得 ... =MID(A1,5,1)

以下同様です。

MID関数の引数の補足

1つめの引数 ... もとのセルや文字列

2つめの引数 ... 文字列のn桁目から

3つめの引数 ... m桁を取得

一つ疑問があるのですが、15桁の値は必ず文字列で入っているのでしょうか?

もし数値として入っているなら先頭が0の場合、0が無くなって15桁とはなりません。

これを回避するためには、もとデータを必ず15桁の文字列に変換する必要がありそうです。

id:kamino2

ちょっと説明が良くなかったようですが「010203・・・」のようなデータが数千件あるのでそれを自動的に複数列セルを使った空欄or1のフラグ形式に変換したいという状況です。

2004/08/17 16:21:53
id:paphio No.3

paphio回答回数299ベストアンサー獲得回数02004/08/17 16:21:54

ポイント14pt

関数を使う場合より「データ」-「区切り位置」を使うと簡単に分けられます。(URL参照)

今回の場合は、「区切り位置指定ウィザード」で「スペースによって右または〜〜」にチェックを入れる。 「次へ」

「データのプレビュー」で2桁ごとにマウスをクリックする。(縦に区切る線が入ります)「次へ」

「区切った後のデータ形式」を必要に応じて「文字列」にします。

最後に「完了」で15セルにデータが分かれます。

 

id:kamino2

惜しいです。区切り位置を使うと2文字ずつには分けられますが、空欄or1のフラグ形式には変換できないのです。

2004/08/17 16:24:44
id:ohmix1 No.4

ohmix1回答回数235ベストアンサー獲得回数142004/08/17 16:32:30

ポイント13pt

http://www.wanichan.com/pc/xl2002/a01.htm

Excel 2002マスター講座 > Excelへのデータのインポート > テキストファイルからのインポート

2で回答したものです。

てっきり、エクセル上の既存データを分離したいのかとおもってしまいました。もうしわけない。

懲りずに、再度回答させていただきます。

案1:

・まず、もとのデータ(テキストファイルと想定)をテキストエディタで開いて、0をスペースに1〜9を1に置き換える。

・その後、回答3の手順でテキストファイルを固定長としてインポート

案2:

・まず、回答3の手順でテキストファイルを固定長としてインポート

・インポートしたセルとは別のセルにIF関数で以下のような式を記述する

=IF(A1>0,”1”,””)

・必要ならIF関数の結果を別のシートにコピペーする

以上は手作業で行うことを想定しております。

何回も行うのならプログラムの必要がありそうです。

id:nankichi No.5

nankichi回答回数562ベストアンサー獲得回数22004/08/17 16:33:53

ポイント13pt

http://software.ssri.co.jp/hide2003/wasshome.html

秀吉2003│機能構成│WASS HOME

質問文からは正確な状況がわからないのですが、MAの回答が一つのセルに入っているのですね?

ex)1つめと2つめと4つめに回答があるばあい

010204

なのか

0102 04

なのか。

どちらにせよ、excelでMAを1 ブランク展開する作業は向いていません。

やるとすれば、15個のセルにまず展開し、その展開した物があるかどうかでon/offチェックです。

データを作ったところにcsvで作り直してもらいましょう。

id:kamino2

0102と04を回答の場合は「010204」となります。

2004/08/17 16:39:00
id:aki73ix No.6

aki73ix回答回数5224ベストアンサー獲得回数272004/08/17 16:39:25

ポイント13pt

こんな感じにしてはいかがでしょうか?

1つめのセルは文字形式にしています

A1に入力値を文字形式で入れた後

=MID(A1,COLUMN(自セル)*2-3,2)

となっていますが横方向に複数あるデータに対して縦や横にフラグデータを分解します

参考にしてみてください

ちなみに、データ形式が

00、01のみで 00の時に空欄にしたいのであれば

=IF(MID(A1,COLUMN(自セル)*2-3,2)=”00”,””,MID(A1,COLUMN(自セル)*2-3,2))

のようにします

単純に1でいいのであれば

=IF(MID(A1,COLUMN(自セル)*2-3,2)=”00”,””,”1”)

とします

id:paphio No.7

paphio回答回数299ベストアンサー獲得回数02004/08/17 17:42:56

ポイント13pt

http://www.geocities.co.jp/

Yahoo!ジオシティーズ - 容量50MBのホームページスペース。日記やゲストブック、アバターなどの機能。

(URLは、ダミーです)

お役に立たなくて申し訳ありません。2回目です。

再度挑戦させてください。

  A    B    C    D    E・・・

1      01   02    03   04

2 010203

3 020410

4 0103060708

5 02060708101113

データはすべてA列に入っているとします。

B1〜P1のセルに01 02 03・・・15まで文字列で入力します。

B2セルに次の計算式を入力してください。

 =IF(ISERR(FIND(B$1,$A2,1)),” ”,1)

B2のセルを横はPまで下はデータの最後までコピーします。

一応「10」を除いてはこれでOKだと思います。

問題は、「10」です。01と02等があると「0102」2桁目から「10」となってしまうことです。

苦し紛れの対策としては、K1のセル(10となっている)に101と入力することによって、一部改善されますが、「10」が最後の場合は対応不可です。

「10」のみ別対策を考えなければなりません。

とりあえず、ここまでいかがでしょうか。

id:kamino2

かなり良い感じですが10が問題となります。生データは出来れば変更したくないのでvbaでやるしかないかなーというところです。

2004/08/17 17:53:37
id:farside No.8

farside回答回数16ベストアンサー獲得回数02004/08/17 18:40:12

ポイント13pt

URLはダミーです。

前のpaphioさんの名案をベースとして、改良版を作りました。

データはすべてA列に(A2から下方向に)入っているものします。

1. B2に次のように入力し、A列のデータの下端までB列下方向にコピーします。

 =IF(LEFT(A2,2)=”01”,”0A”&RIGHT(A2,LEN(A2)),A2)

2. C1〜Q1のセルに0A 02 03・・・15まで文字列で入力します。01の代わりに0Aとするのがミソです。

3. C2セルに次の計算式を入力し、右方向にQ2まで、下方向にデータの下端までコピーします。

 =IF(ISERR(FIND(C$1,$B2,1)),” ”,1)

結果を読む際は、0Aは01と読み替えてください。見た目が重要な場合は、列Bと行1を非表示にし、適当な行見出しを追加してください。

id:cline No.9

cline回答回数60ベストアンサー獲得回数02004/08/17 18:47:36

ポイント50pt

VBAで作ってみました。

マクロ名は”Extract”です。

左端(A)のセルに回答データを置き、マクロを実行してください。

マクロ自体は簡単なものですし、改造しやすく作ったので参考にしてください。

id:kamino2

マクロまで作って頂きありがとうございました。おかげさまで解決しました。また機会がありましたら是非よろしくお願いします。

2004/08/17 18:52:39
  • id:aki73ix
    マクロを使わない方法

    間に合いませんでしたが一応・・・
    http://nifberry.727.net/test/hatena58a.xls

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません