
以下にようにランダムな3桁の数字が並んでいるtxtファイルから、どの数字が何回出現したか、をスピーディに確認する方法はないでしょうか?
仕事でデータ分析のため上記の作業が必要なのですが、いつもはマニュアル作業で上から出てきた数字を片っ端からファイル内で検索かけて、終わった数字は空白に置き換えてファイルから消していくという方法でちまちまと集計しています。。
記録数が膨大な時はめちゃくちゃ無駄な作業に感じるので改善したいのですが、いい方法が思いつかず。。
txtをExcelに取り込んだりもしてみましたが、あまり変わりませんでした。
Excelの計算式でもマクロでも、その他プログラミングでも何でも良いのですが、良い方法はないでしょうか?
以前プログラミング教室に通っていたので、出来ることは確実だと思うのですが、当時の記憶がすべて飛んでしまいました。。
この分野に詳しい方、お知恵を拝借できますと幸いです!
例)
516
515
502
544
599
515
...
→この場合、515以外は一回出現、515は2回という情報を知れれば大丈夫です。
A 回答 (10件)
- 最新から表示
- 回答順に表示
No.9
- 回答日時:
No.7
- 回答日時:
自分ならawkでコマンドライン一発かな…
awk '{hist[$1] +=1}END{for(a in hist){print a, hist[a]}}' 3桁数字のファイル.txt
結果は
502 1
515 2
516 1
544 1
599 1
No.5
- 回答日時:
txtファイルの形、規模がいまいちわかりませんが コピーしてExcelのシートA1セルに貼り付けると 例のように行方向で改行コードでセル別に値が入りますか?
具体的な数式やコードを書いてよいのかわかりませんが・・・
入るとした場合(大前提)
Unique関数が使えるExcelバージョンの一例
A1にテキストを貼り付け
B1セルに=UNIQUE($A$1:$A$100)
C1セルに=COUNTIF($A$1:$A$100,$B1)
C1セルを下方向にフィルハンドル
(とりあえず100行)
これをVBAで行う場合
A1セルにペーストする シートのシートタグを右クリックして コードの表示をクリック
表示された場所に
Sub Numbers_count()
Dim intNumbers()
Dim Rng As Range
Set Rng = Range("A1", Cells(Rows.Count, "A").End(xlUp))
intNumbers = WorksheetFunction.Unique(Rng)
ReDim arrCount(UBound(intNumbers))
Dim k As Variant, n As Long
For Each k In intNumbers
arrCount(n) = WorksheetFunction.CountIf(Rng, k)
n = n + 1
Next
Range("B1").Resize(UBound(intNumbers)).Value = intNumbers
Range("C1").Resize(UBound(arrCount)).Value = WorksheetFunction.Transpose(arrCount)
End Sub
コピペ後 Numbers_count を実行
No.4
- 回答日時:
No1です。
excel-vba(マクロ)になります。以下のマクロを標準モジュールに登録し、実行してください。
実行すると、ファイル選択用のダイアログボックスが表示されるので、処理対象となるテキストファイルを選択してください。
そうすると、実行結果が、Sheet1に出力されます。(A列が数字、B列が出現回数)
(Sheet1は予め、用意しておいてください)
テキストファイルの拡張子は, ".txt" の前提です。
Option Explicit
Public Sub 出現数カウント()
Dim fname As String
Dim ws As Worksheet
Dim dicT As Object
Dim text As String
Dim key As Variant
Dim wrow As Long: wrow = 1
Set ws = Worksheets("Sheet1")
ws.Cells.ClearContents
Set dicT = CreateObject("Scripting.Dictionary")
fname = Application.GetOpenFilename("テキストファイル,*.txt")
If fname = "False" Then Exit Sub
Open fname For Input As #1
Do Until EOF(1)
Line Input #1, text
If dicT.exists(text) = False Then
dicT(text) = 1
Else
dicT(text) = dicT(text) + 1
End If
Loop
Close (1)
For Each key In dicT.keys
ws.Cells(wrow, 1).Value = key
ws.Cells(wrow, 2).Value = dicT(key)
wrow = wrow + 1
Next
If wrow > 1 Then
ws.Range("A1:B" & wrow - 1).Sort key1:=Range("B1"), order1:=xlDescending, Header:=xlNo
End If
MsgBox ("完了")
End Sub
No.3
- 回答日時:
こんにちは
以下の手順ではいかがでしょうか。
1)エクセルで読み込み
(A列に取り込めるとします)
2)A列をC列にコピペ
3)C列を選択し、「データ」-「データツール」-「重複の削除」を選択
4)D1セルに
=COUNTIF(A:A,C1)
を入力し、D1セルを選択状態で、右下のフィルハンドルをダブルクリック
(入力した式が、下方にフィルコピーされます)
以上で、D列に出現回数が表示できます。
>以前プログラミング教室に通っていたので、出来ることは確実だと
>思うのですが、当時の記憶がすべて飛んでしまいました。。
何度も同じことを行うのでプログラム化したいというのであれば、上記の操作を「マクロの記録」で記録しておけば、ほぼ再利用可能なマクロを作成できます。

No.1
- 回答日時:
rubyかpythonかperlのどれかがあなたのPCにインストールされていますか。
そうであれば、簡単です。
どれもインストールされていないなら、excel(vba)になります。
ありがとうございます。
現状はどのプログラミング言語もインストールしていないです。
学校で学んだのはJavaだったのですが、結構使えるようになるまで初期設定面倒だった記憶があり、上げて頂いた言語の中で無料で簡単な設定ですぐ使用できる言語はありますか?
でもExcelで出来るのなら、それが一番有り難いです!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【スプレドシート】IMPORTRANGE...
-
エクセルで「500時間」を「何日...
-
エクセルを上書き保存したのに...
-
パワーポイントをエクセルファ...
-
グーグルマップ
-
エクセル GROUPBY関数について...
-
ポール強度計算書ソフト
-
ExcelファイルがDoxillionに突...
-
いきなりPDFでPDFファイルを開...
-
エクセルでCSVファイルとして保...
-
エクセルで数値の上3桁で切捨...
-
エクセルでファイルを閉じても...
-
エクセルでVBAを使用して1分毎...
-
三四郎のファイルをエクセルで...
-
エクセルにクリックすると指定...
-
xl
-
作業場の温度環境測定と分析
-
EXCEL VBAで2つEXCELを起動した...
-
EXCELで上書き保存しないと反映...
-
エクセル、形式を選択して貼り...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【スプレドシート】IMPORTRANGE...
-
エクセルでファイルを開かずに...
-
Excel 2枚目のブックが開かな...
-
エクセルで他のファイルのセル...
-
CPU使用率が100%となっ...
-
MATLABでcsvファイルを読み込も...
-
複数のtxtの特定部分を抽出し、...
-
one drive からExcel onlineを...
-
マクロでシートのデータをコピ...
-
エクセルでハイパーリンクが貼...
-
VBAで集計元のファイル名を取得...
-
ファイル内にある数字の出現回...
-
ファイル比較ツール
-
マクロで別ファイルのシートコ...
-
複数のExcelfファイルをを1つの...
-
PhotoshopでExcelのファイルが...
-
excel マクロについて
-
エクセルマクロ 数式【VLOOKUP...
-
エクセルマクロ(vba)のFSO.Open...
-
パワーポイントをエクセルファ...
おすすめ情報