- ベストアンサー
エクセルの中身を分割する方法
あるアンケートの集計をする必要があります。 エクセルシートにすべての回答が打ち込まれていて、 1つのセルに答えが複数打ち込んであります。 たとえば、 A1セル 1,2,3,11 A2セル 2 A3セル 4,11 というふうにセルが700コ×20列くらいあります。 これを 1が何件、2が何件、3が何件・・・・というふうに 集計する必要があります。 どうしたら一番いいのでしょう? FIND関数を用いて、","を探させ、1つのセルを 分割させるのが一番よいのかと思いましたが、 複雑な関数になり、わからなくなりました。 また、アクセスにインポートをやろうとすると上記A1セルの場合、 "1 と2と 3 と11"のフィールドにわかれてしまい、 しかもクエリの際、"を認識させることができません。 またはよいエディタやソフトなどがあるのでしたら教えてください。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは。 こんな方法があります。 Alt + F11 (Altを押しながらF11)を押すと、Visual Basic Editor 画面が出てきます。 次に、メニューの[挿入]-[標準モジュール]と開けて、クリックすると、画面が現れますので、以下のコードを貼り付けて、再び、Alt + F11 で、画面を閉じます。 Option Explicit Function StrCountIf(検索値 As String, 範囲 As Range) As Long Dim c As Range, ar As Variant, i As Variant, cnt As Long Application.Volatile For Each c In 範囲 If InStr(c.Value, ",") > 0 Then ar = Split(c.Value, ",") For Each i In ar If 検索値 Like i Then cnt = cnt + 1 End If Next i Else If 検索値 Like c.Value Then cnt = cnt + 1 End If End If Next c StrCountIf = cnt End Function 使い方は、 1 =STRCOUNTIF(F1,$A$1:$A$3) ↓フィルドラッグします。 2 1 3 2 4 1 5 0 6 1 7 0 8 0 9 1 10 0 11 2 12 0 13 0 14 0 15 0 16 0 なお、VBAマクロを残したくなければ、コピー-値貼り付けしてしまって、マクロを削除してもよいかと思います。(実際に、そのほうが、ブックは軽くなります。)
その他の回答 (3)
- kenken_ken
- ベストアンサー率33% (20/59)
データ-区切り位置の設定では、No.1の方のご説明にあるように > ただ例えばA1を処理する際、B1やC1に値が入っていると処理できません。 ので、その場合には 1.全データを選択 2.コピー 3.テキストエディタ(メモ帳でもOK)を開き、そこにペースト 4.テキストの拡張子を ".txt"にして保存 5.Excelで「データ」-「外部データの取り込み」-「テキストファイルのインポート」を選択 6.保存したテキストファイルを「インポート」 7.「テキストファイルウィザード 1/3」で「カンマやタブなどの区切り文字によってフィールドごとに区切られたデータ」を選択 8.「テキストファイルウィザード 2/3」で「タブ」「カンマ」の2つをチェック 9.「テキストファイルウィザード 3/3」で・・・「G/標準」でいいのかな?必要に応じて。 10.「データのインポート」で、データを貼り付けたい一番左上のCellを指定 とすればできます。 手順が多いように見えますが、そんなに大変ではありません。
- masa_019
- ベストアンサー率61% (121/197)
メニューの、データ - 区切り位置 で、","を区切り文字にして分割すればいいのでは? A B C 1 1,2,3,11 2 2 3 4,11 ↑こんなデータが ↓こんなデータになります。 A B C D 1 1 2 3 11 2 2 3 4 11
- ttyp03
- ベストアンサー率28% (277/960)
例えば A1 セルで、メニューから [データ]-[区切り位置] を選び、[カンマやタブなど~] を選択し [次へ] をクリック。 [区切り文字] のチェックボックスの中から [カンマ] にチェックをつけ [完了] をクリックしてください。 これでカンマ毎に分割され、それぞれ A1~D1 に格納されます。 これを700行分やってから(700行分選択してから先ほどの[区切り位置]でOK)、最後に COUNTIF 等でそれぞれのカウントを取ってやればいいかと思います。 ただ例えばA1を処理する際、B1やC1に値が入っていると処理できません。
補足
すばらしい!ありがとうございました。 これからのアンケート集計に役立たせていただきます。