|A|B|C|D|
--------------
1|あ|い|う|え|
--------------
2|お|あ|あ|か|
--------------
上記は1行目に左から「あ」「い」「う」「え」が入力されていることを表しています。
この表の中から、一番多く入力されている文字だけを別のセルに抽出させるにはどのようにしたら良いでしょうか。
上記の例を使用すると、A列の5行目(任意のセル)に「あ」と抽出するようにしたいです。
いろいろと調べてみましたが、このように表の中で最も多く入力されている、「文字」または「数字」だけを抽出するという処理方法がみつかりませんでした。
マクロなら可能でしょうか?
このような処理ができる関数もなさそうなので、無理なのかな。
アドバイスを御願い致します。
A 回答 (13件中11~13件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
簡単なマクロを作ってみました。
Option Explicit
Sub maxmoji()
Dim gyou As Integer
Dim retsu As Integer
Dim countmoji(100, 4)
Dim mojishu As Integer
Dim cellchar As String
Dim seirinum As Integer
Dim i As Integer
Dim j As Integer
Const moji = 0
Const kazu = 1
Const leftbig = 2
Const rightbig = 3
Dim maxchar As String
Dim maxnum As Integer
Dim thiscount As Integer
gyou = Range("A1").End(xlDown).Row
retsu = Range("A1").End(xlToRight).Column
mojishu = 0
For i = 1 To gyou
For j = 1 To retsu
cellchar = Cells(i, j).Value
seirinum = 0
If mojishu = 0 Then
countmoji(0, moji) = cellchar
countmoji(0, kazu) = 1
mojishu = 1
Else
Do
If countmoji(seirinum, moji) = cellchar Then
countmoji(seirinum, kazu) = countmoji(seirinum, kazu) + 1
Exit Do
ElseIf countmoji(seirinum, moji) > cellchar Then
If countmoji(seirinum, leftbig) > 0 Then
seirinum = countmoji(seirinum, leftbig)
Else
countmoji(seirinum, leftbig) = mojishu
countmoji(mojishu, moji) = cellchar
countmoji(mojishu, kazu) = 1
mojishu = mojishu + 1
Exit Do
End If
Else
If countmoji(seirinum, rightbig) > 0 Then
seirinum = countmoji(seirinum, rightbig)
Else
countmoji(seirinum, rightbig) = mojishu
countmoji(mojishu, moji) = cellchar
countmoji(mojishu, kazu) = 1
mojishu = mojishu + 1
Exit Do
End If
End If
Loop
End If
Next
Next
maxnum = 0
For i = 0 To mojishu
thiscount = countmoji(i, kazu)
If thiscount > maxnum Then
maxnum = thiscount
maxchar = countmoji(i, moji)
ElseIf thiscount = maxnum Then
maxchar = maxchar & " , " & countmoji(i, moji)
End If
Next
Cells(5, 1).Value = maxchar
End Sub
No.2
- 回答日時:
こんにちは。
maruru01です。行、列とも複数だと難しいようです。
データが1行か1列になっていれば、関数で出来ます。
例えば、A1~H1にデータがある場合、
=INDEX($A$1:$H$1,MIN(IF(COUNTIF($A$1:$H$1,$A$1:$H$1)=MAX(COUNTIF($A$1:$H$1,$A$1:$H$1)),COLUMN($A$1:$H$1),65537)))
と入力して、[Ctrl]+[Shift]+[Enter]で配列数式にします。
(数式の両端に「{}」が付きます)
これで例だと、「あ」が表示されます。
ちなみにデータを1行にする場合は、数式のCOLUMN関数をROW関数に替えて下さい。
こんばんは。
maruruさん、御回答ありがとうございます。
行と列の中から抽出するのは、難しいのですね。。。
現在使用しているデータが、複数の行と列にまたがって入力されちるため、表の全体から抽出することができればいいな、と思っていました。
まだ実際には試していないのですが、一番多く入力されていた文字が2つ以上あるとしたら、全ての文字を抽出させることは無理ですよね??
抽出文字にも優先順位がありそうですし。
VBAを使用しても難しいでしょうか。
もうちょっと模索してみます。
また何かアドバイスがありましたら、よろしく御願いします。
ありがとうございました。
No.1
- 回答日時:
エクセルの関数の1つに、FREQUENCYと言うのがあります。
各セルに必ず1文字、1数字が入っているなら、と言うよりセル単位で語(a,abcなど)か数字(1,13など)単位で
出現頻度を出すようです。
http://bosei.cc.u-tokai.ac.jp/~yhiroshi/cmpltr/t …
他「エクセル FREQUENCY」でWEB照会してください。相当多数出ます。配列数式{・・・}と言う概念が出ますので、その理解が必要かと思います。
ただし、ちょっと質問の趣旨とずれているかもしれませんね。
VBAなら出来そうです。朝で時間がなくこの辺で。
早速の御回答ありがとうございます。
「FREQUENCY」関数ですが、これは分布を調べる関数なので私が希望するような処理はできないようです。
せっかうアドバイスして頂けたのに、すみません。
やはり関数のみで処理するのはできないでしょうか。
VBで処理できるとしても、私には記述できないので、もしVBでできそうであればどなたかアドバイスを御願い致します。
imogasiさん、ありがとうございました。
引き続き、何かありましたらアドバイスを御願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(データベース) Accessのクエリで1フィールドの抽出条件設定をNullでなく全角半角含む空白のみの文字列でない文 1 2023/04/24 15:20
- Excel(エクセル) Indirect関数について、Formulatextで抽出した数式を参照したい。 1 2022/12/15 11:16
- Excel(エクセル) エクセルで2つの表を比較して、文字列が同じだが、その行のある値が違うものを抽出したい 1 2022/10/06 21:48
- Excel(エクセル) エクセルで重複データから重複を削除して指定の列に抽出したい 11 2022/05/11 11:26
- Excel(エクセル) エクセル関数の変わった使い方 3 2022/05/13 17:12
- Visual Basic(VBA) Sheet2からオートフィルターで売上日を抽出した件数をカウントし、その件数をSheet1のセルB1 2 2023/01/12 12:24
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/06/15 14:11
- Excel(エクセル) エクセルで#以降の文字を取得したい 1 2022/03/28 13:14
- Excel(エクセル) 条件に合った数値の合計を表示させたい関数と条件指定の方法 3 2023/05/13 16:07
- その他(プログラミング・Web制作) プログラミング pythonの問題について 2 2022/04/19 00:41
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【Excel関数】UNIQUE関数で"0"...
-
エクセルで特定の文字列が入っ...
-
直近の5個の平均を求めたい
-
Excel グラフのプロットからデ...
-
[EXCEL]ボタン押す→時刻が表に...
-
エクセル マクロ オートフィ...
-
Excelでカタカナ・ひらがな・英...
-
EXCEL 「最後のセル」のリセット
-
エクセルの幅 高さをセンチで...
-
特定の文字がある行以外を削除...
-
AのセルとB行を比較して、一致...
-
エクセル2016で時間を入力して...
-
エクセルVBAで、INSERT文を生成
-
エクセルでセルの大きさを一律...
-
VBAで「Shift+ctrl+↓」のような...
-
セルではなく行や列、シート全...
-
【マクロ】book1からbook2への...
-
結合しているセルへのオートフィル
-
Excel VBA アクティブセルから...
-
excel 小さすぎて見えないセル...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで特定の文字列が入っ...
-
【Excel関数】UNIQUE関数で"0"...
-
エクセル マクロ オートフィ...
-
[EXCEL]ボタン押す→時刻が表に...
-
AのセルとB行を比較して、一致...
-
特定の文字がある行以外を削除...
-
エクセル 上下で列幅を変えるには
-
エクセル マクロで数値が変っ...
-
Excel グラフのプロットからデ...
-
excelのデータで色つき行の抽出...
-
結合されたセルをプルダウンの...
-
アクティブになっている行をマ...
-
VBAで色の付いているセルの行削除
-
セルの色によって条件文をつけ...
-
excel 小さすぎて見えないセル...
-
電話番号の入力方式が違うデー...
-
Excelでカタカナ・ひらがな・英...
-
エクセルVBA 最終行を選んで並...
-
EXCELマクロを使い、空白行では...
-
EXCELで最後の行を固定
おすすめ情報