• ベストアンサー

単純作業で入力した番号の集計

様々な数字を入力して、入力した何番が何個なのか集計する方法や、 その作業に役立つフリーソフトを探しています。 希望の作業を判り易く「果物」で説明しますと、 りんご みかん ぶどう みかん ぶどう ぶどう みかん りんご いちご と、同じ果物が重複しても一個ずつ単品で入力します。 文字を入力したらEnter 入力→Enter→入力→Enter→入力→Enter→入力→Enter→ の繰り返しです。 すると、結果が自動的に りんご2 みかん3 ぶどう3 いちご1 と、表示してほしいのです。 今、考えてる作業は、エクセルのAの縦欄だけを使い、様々な文字を数百行書き出します。 何度も同じ番号が重複しますが、入力→Enterの繰り返しです。 すべて入力後、にエクセルで並べ替えしても、何番が何個重複したのか一目では解り辛いので、 りんご2 みかん3 ぶどう3 いちご1 と入力結果を一目で確認したいのです。 単純作業を求めているので、 入力+Enterの繰り返しだけでの作業ですが、 もっと便利な方法があれば、アドバイスも宜しくお願いいたします。

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.4

入力の都度、結果を正しく瞬時に出してほしいのだろう。 これが難しさの原因だ。 VBAでもA列のデータに変化が有ると、というイベントの考え仕組みで処理しなければならず、入力後の反応がまどろっこしいかも。またVBA経験者ではなかろうから略。 ーー 普通は入力が区切りがついた(例一日の終わり)とき、 (1)フィルタオプションの設定で異品目のリストを別のセル範囲に作る (2)抜き出した各品目を条件にして、COUNTIFで件数をだす。式は異品目全行に複写する。 既出の回答は(1)が終わってからの回答になっている。 ーーー 全てを連動させると 例データ 最多行数99行を念頭に置いた式で説明 A列  B列(作業列) a 1  <--第2行目から a s 2 d 3 s d f 4 g 5 a g h 6 ・・   <-B列は式は第100行まで埋まっている。 B2の式は=IF(A2="","",IF(COUNTIF($A$2:A2,A2)=1,MAX($B$1:B1)+1,"")) だい100行目まで式複写。 入録する都度初出の行に連番が振られることを確認。 ーーー G2セルに =IF(ROW()-1>MAX($B$2:$B$100),"",INDEX($A$2:$A$100,MATCH(ROW()-1,$B$2:$B$100,0),1)) と入れて第100行まで式を複写。 H2セルに =IF(G2="","",COUNTIF($A$2:$A$100,G2)) と入れて第100行まで式を複写。 ーー 結果 a 3 s 2 d 2 f 1 g 2 h 1 以下、式はうまっている。 以上は自称、imogasi方式でGoogleで照会すれば同様の方法が抜き出しなどに使えるという回答がたくさん出ます。

CHARCOAL99
質問者

お礼

imogasi方式って、imogasi様が編み出したのですね! 「入力の都度、結果を正しく瞬時に出してほしいのだろう。 これが難しさの原因だ。」 ご回答の下りで、やはり希望の作業は無理だと諦め半分で、 説明の通りの関数を入れて、動作チェックした時にびっくりしました! まさにやりたい事が出来ました! いや、やりたい事以上に便利です! A列に手動入力すれば、B列には入力した種類の数、そしてG&H列に入力文字+結果が自動で反映されました! 誠に有難う御座いました!

その他の回答 (4)

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.5

>誰でも入力したら集計 ⇒VBAの一例です。 (1)対象のシートタブを右クリック→コード表示して以下のコードを貼り付け→altキー押下しながらF4キー押下  Private Sub Worksheet_Change(ByVal Target As Range) On Error GoTo Error If Intersect(Target, Range("A:A")) Is Nothing Then Exit Sub For i = 1 To Cells(Rows.Count, 3).End(xlUp).Row If Cells(i, 3) = Target.Value Then Cells(i, 4) = Cells(i, 4) + 1 k = 1 End If Next If k = "" Then Cells(i, 3) = Target.Value Cells(i, 4) = 1 End If Error: End Sub (2)C1に「種類」、D1に個数を入力後、A列にデータ入力

CHARCOAL99
質問者

お礼

回答有難う御座います。 VBAは使った事も知識も無いのですが、 回答の手順通りに進めば、簡単に集計する事が出来ました。 動作も軽く使いやすく感じます。 大変に勉強になりました。

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.3

エクセルを利用する方法ですが如何でしょうか。 (1)先頭行は見出し行として、仮にA1を「データ」、B1を「個数」とします (2)先ず、B2:B5を選択した状態で数式バーに=COUNTIF(A:A,A2)と入力し、ctrlキー押下しながらenterキー押下 (3)A2以下にデータ入力 (4)データ入力完了後、A1を選択→データ→フィルタ→フィルタオプションの設定→重複するレコードは無視するにチェック→OK    重複した行が未表示になっているので再表示する場合、「元に戻す」キー押下、又はデータ→フィルタ→フィルタオプションの設定→OKとして下さい。 因みに結果が自動的に表示される事をお望みならばVBAを組み入れることになります。

CHARCOAL99
質問者

お礼

解りやすい作業手順を有難う御座います。 しかし、COUNTIFでは思うような作業と慣れない関数で手惑います。 先に関数を仕込んでおいて、誰でも入力したら集計されたら良いとは思ってましたが、 それをするには、VBAを組まなければならなくなるのですね。 全く知識がないので自分で組むのは不可能ですが。 仕上げてくれたフリーソフトは存在しないものでしょうかね。 ご解答、有難う御座いました。

  • gyouda1114
  • ベストアンサー率37% (499/1320)
回答No.2

B列に 調べる品名 C1に =COUNTIF($A:$A,B1) 下方にオートフィル A列の範囲にあるB1の数を数える。

CHARCOAL99
質問者

補足

解りやすい図解、誠に有難う御座います。 私の説明不足で申し訳御座いません。 countif関数を調べたところ、条件を先に手動入力するのが条件のようですが、私のやりたい事は、条件指定をしないで、無限にある単語や、ランダム数字の入力結果を出せたらと思ってます。

  • ro-chan
  • ベストアンサー率38% (45/116)
回答No.1

エクセルをご利用でしょうか? エクセルのcountif関数で、条件に一致するセルの個数を求めることができます。 例えば、 =countif(A1:A999,“りんご”) この式の”りんご”を任意の名称、または、セル参照にします。 参考URLもご覧下さい。

参考URL:
http://pc.nikkeibp.co.jp/article/technique/20080623/1005367/
CHARCOAL99
質問者

補足

早速のご解答有難う御座います。 COUNTIF:カウントイフ【条件に合致したセルの個数を数える】 こういった関数もあるのですね。 基本的にはエクセルを使おうと思ってるのですが、フリーソフトで便利なのがあれば、ソフトも使ってみたいと思います。 私の説明不足で申し訳御座いません。 countif関数を調べたところ、条件を先に手動入力するのが条件のようで、 私のやりたい事は、条件指定をしないで、無限にある単語や、ランダム数字の入力結果を出せたらと思ってます。 参考URLまで有難う御座います。