エクセルの質問です。

下記のように1つのセル内に一桁から二桁までの数字が半角スペースで区切られて並んでいます。
1 3 4 11
同じ列の続く行にも同様に数字が並んでいます。
2 4 8 12
1 3 5 11
この場合、同じ列にある同じ数字をカウントする事は可能であれば教えて下さい!
この例ですと、1が2つ、2が1つ、3が2つ、4が2つ、5が1つ、8が1つ、11が2つ、12が1つ、
と集計できればいいのですが…。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:2010/06/23 18:50:35
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:kon-hiro No.2

回答回数2ベストアンサー獲得回数1

ポイント100pt

nepia11 さんの回答が適切だと思います。

半角スペースで区切られた数字が多くなっても、操作が単純ですので対応出来るのでおすすめです。

が、まあ、他にもやり方があるにはあるということで、関数を使った方法を回答します。

使うのは、SEARCH関数、LEFT関数、MID関数の3つの組み合わせです。

SEARCH関数で、半角スペースの位置(何文字目か)を探り、

LEFT関数やMID関数で、数字を引っ張ってくるという方法です。

数えたい対象となるセルがA1だったとし、A1に

1 3 4 11

と入力されているとき、

①B1に、

=LEFT(A1,SEARCH(" ",A1,1)-1)

と入力する。

(A1の1つ目の半角スペースの位置の1つ前までの数字を左から切り出すという意味)

②C1に

=LEFT(MID(A1,SEARCH(" ",A1,1)+1,99),SEARCH(" ",MID(A1,SEARCH(" ",A1,1)+1,99),1)-1)

と入力する。

(A1の1つ目の半角スペースの位置の1つ後から99文字を切り出し、その文字の1つ目の半角スペースの位置の1つ前までの数字を左から切り出すという意味)


③D1に

=LEFT(MID(MID(A1,SEARCH(" ",A1,1)+1,99),SEARCH(" ",MID(A1,SEARCH(" ",A1,1)+1,99),1)+1,99),SEARCH(" ",MID(MID(A1,SEARCH(" ",A1,1)+1,99),SEARCH(" ",MID(A1,SEARCH(" ",A1,1)+1,99),1)+1,99),1))

と入力する。

(A1の1つ目の半角スペースの位置の1つ後から99文字を切り出し、さらに、その文字の1つ目の半角スペースの位置の1つ後から99文字を切り出し、その文字の1つ目の半角スペースの位置の1つ前までの数字を左から切り出すという意味)


④E1に

=MID(MID(MID(A1,SEARCH(" ",A1,1)+1,99),SEARCH(" ",MID(A1,SEARCH(" ",A1,1)+1,99),1)+1,99),SEARCH(" ",MID(MID(A1,SEARCH(" ",A1,1)+1,99),SEARCH(" ",MID(A1,SEARCH(" ",A1,1)+1,99),1)+1,99),1)+1,99)

と入力する

(A1の1つ目の半角スペースの位置の1つ後から99文字を切り出し、さらにその文字の1つ目の半角スペースの位置の1つ後から99文字を切り出し、さらにその文字の1つ目の半角スペースの位置の1つ後から99文字を切り出すという意味)

⑤そうすると、

B1には

1

C1には

3

D1には

4

E1には

11

と表示される。

⑥これらを下にコピーすると、B列、C列、D列、E列に 表が出来上がるので、これをCOUNTIF関数で数える。

⑦ここまで入力していたのをSheet1として、Sheet2のA列に

1

2

3

4

5

と行った具合に、数えたい数字を打っていく

⑧Sheet2のB1に

=COUNTIF(Sheet1!B:B,$A1)

と入力する

⑨これをC1、D1、E1にコピーする

⑩B1、C1、D1、E1を選択して、A列に数字が入っているところまで下へコピーする

これでSheet2に結果が表示されます。


Sheet1の作業が複雑だし、関数がわからなければ、さっぱり操作できないので、こんなやりかもあるという程度に思っていただければと思います。

尚、⑥以降は、他のやり方をでも共通で使えます。

http://q.hatena.ne.jp/

id:gotoday

ありがとうございました!ちょっと今は手が離せないのですが、スゴイ!

丁寧さに感謝!

2010/06/23 18:50:23

その他の回答1件)

id:nepia11 No.1

回答回数714ベストアンサー獲得回数146

ポイント100pt

エクセルで

1.編集>置換で

・検索する文字列「 」←半角スペース

・置換後の文字列「,」

にします。

そうすると1 3 4 11→1,3,4,11 になります。

2.ファイル>名前をつけて保存から、

ファイルの種類をcsvファイルにして、任意の名前を付けて保存します。

3.そのファイルを、メモ帳等で開きます。

"1,3,4,11"

となっているので、これまた

4.編集>置換で

・検索する文字列「"」

・置換後の文字列「 」←半角スペース

そうると

"1,3,4,11"→1,3,4,11

5.この状態で、上書き保存。

6.このファイルをエクセルファイルで開くと、

A1セル=1 B1セル=3・・・ となります。

counta関数やcountif関数で数を数えることが出来ます。

http://q.hatena.ne.jp/

id:gotoday

ありがとうございました!確かに、できそうというか、似た事を昔やった覚えがあります。

ただ、他の行のデータの絡みでこれをやるとかえって時間がかかって手計算の方が早くなってしまうんです。

元データを示せてないので、不適切というか曖昧な質問で申し訳ないです。

2010/06/23 18:49:16
id:kon-hiro No.2

回答回数2ベストアンサー獲得回数1ここでベストアンサー

ポイント100pt

nepia11 さんの回答が適切だと思います。

半角スペースで区切られた数字が多くなっても、操作が単純ですので対応出来るのでおすすめです。

が、まあ、他にもやり方があるにはあるということで、関数を使った方法を回答します。

使うのは、SEARCH関数、LEFT関数、MID関数の3つの組み合わせです。

SEARCH関数で、半角スペースの位置(何文字目か)を探り、

LEFT関数やMID関数で、数字を引っ張ってくるという方法です。

数えたい対象となるセルがA1だったとし、A1に

1 3 4 11

と入力されているとき、

①B1に、

=LEFT(A1,SEARCH(" ",A1,1)-1)

と入力する。

(A1の1つ目の半角スペースの位置の1つ前までの数字を左から切り出すという意味)

②C1に

=LEFT(MID(A1,SEARCH(" ",A1,1)+1,99),SEARCH(" ",MID(A1,SEARCH(" ",A1,1)+1,99),1)-1)

と入力する。

(A1の1つ目の半角スペースの位置の1つ後から99文字を切り出し、その文字の1つ目の半角スペースの位置の1つ前までの数字を左から切り出すという意味)


③D1に

=LEFT(MID(MID(A1,SEARCH(" ",A1,1)+1,99),SEARCH(" ",MID(A1,SEARCH(" ",A1,1)+1,99),1)+1,99),SEARCH(" ",MID(MID(A1,SEARCH(" ",A1,1)+1,99),SEARCH(" ",MID(A1,SEARCH(" ",A1,1)+1,99),1)+1,99),1))

と入力する。

(A1の1つ目の半角スペースの位置の1つ後から99文字を切り出し、さらに、その文字の1つ目の半角スペースの位置の1つ後から99文字を切り出し、その文字の1つ目の半角スペースの位置の1つ前までの数字を左から切り出すという意味)


④E1に

=MID(MID(MID(A1,SEARCH(" ",A1,1)+1,99),SEARCH(" ",MID(A1,SEARCH(" ",A1,1)+1,99),1)+1,99),SEARCH(" ",MID(MID(A1,SEARCH(" ",A1,1)+1,99),SEARCH(" ",MID(A1,SEARCH(" ",A1,1)+1,99),1)+1,99),1)+1,99)

と入力する

(A1の1つ目の半角スペースの位置の1つ後から99文字を切り出し、さらにその文字の1つ目の半角スペースの位置の1つ後から99文字を切り出し、さらにその文字の1つ目の半角スペースの位置の1つ後から99文字を切り出すという意味)

⑤そうすると、

B1には

1

C1には

3

D1には

4

E1には

11

と表示される。

⑥これらを下にコピーすると、B列、C列、D列、E列に 表が出来上がるので、これをCOUNTIF関数で数える。

⑦ここまで入力していたのをSheet1として、Sheet2のA列に

1

2

3

4

5

と行った具合に、数えたい数字を打っていく

⑧Sheet2のB1に

=COUNTIF(Sheet1!B:B,$A1)

と入力する

⑨これをC1、D1、E1にコピーする

⑩B1、C1、D1、E1を選択して、A列に数字が入っているところまで下へコピーする

これでSheet2に結果が表示されます。


Sheet1の作業が複雑だし、関数がわからなければ、さっぱり操作できないので、こんなやりかもあるという程度に思っていただければと思います。

尚、⑥以降は、他のやり方をでも共通で使えます。

http://q.hatena.ne.jp/

id:gotoday

ありがとうございました!ちょっと今は手が離せないのですが、スゴイ!

丁寧さに感謝!

2010/06/23 18:50:23
  • id:SALINGER
    回答できなかったのでコメントで失礼します。
    データの入っているセルを選択して、メニューかリボンの、データ→区切り位置というのを使えば、
    セルを分ける処理、1番目の回答の最終行以外、2番目の回答の⑥までの処理がそれだけでできますよ。
    http://kokoro.kir.jp/excel/delimitation-position.html

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

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

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

回答リクエストを送信したユーザーはいません