• 締切済み

表の中でもっとも多く使用されている文字(数字)を抽出するには

nishi6の回答

  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.5

ユーザー定義関数を作ってみました。A5に式を入力してみて下さい。 =maxNum_Chr("A1:B4","D2:D5","F1:K6") のように、調べる領域を必要なだけ指定します。 例えば、「あ」が9個で一番多ければ、あ(9個) と表示。 「あ」と「い」と「1」が3個で一番多ければ、あ,い,1(3個) と表示します。 Function maxNum_Chr(rg1, ParamArray rg2())   Dim cot As Long, cot2 As Long '2つ目以降のセル領域の個数   Dim rgArea As Range      '結合したセル領域   Dim dt() As String       'セルの値を取り込む配列   Dim rg As Range        'セル   Application.Volatile   '飛び離れた領域を同一視するようにします   Set rgArea = Range(rg1)     If UBound(rg2) <> -1 Then       For cot = LBound(rg2) To UBound(rg2)         Set rgArea = Application.Union(rgArea, Range(rg2(cot)))       Next     End If     'セルの値を取り込みます     Dim num As Long      'データ個数     num = rgArea.Count     ReDim dt(num)       cot = 0       For Each rg In rgArea         cot = cot + 1: dt(cot) = rg.Text       Next   'セルの値を比較します   Dim chkDT As String   Dim nMAX As Integer, cCot As Integer     For cot = 1 To num       If dt(cot) <> "" Then         chkDT = dt(cot): cCot = 1         For cot2 = cot + 1 To num  '個数をカウント           If chkDT = dt(cot2) Then             dt(cot2) = "": cCot = cCot + 1           End If         Next         If nMAX = cCot Then     '最大個数が複数           maxNum_Chr = maxNum_Chr & "," & chkDT         ElseIf nMAX < cCot Then   '最大は1つのみ           maxNum_Chr = chkDT: nMAX = cCot         End If       End If     Next   maxNum_Chr = maxNum_Chr & "(" & nMAX & "個)" End Function

cuty_girl
質問者

お礼

nishi6さん、御回答ありがとうございます。 早速試してみたのですが、上手くいきません。 恐らくVB自体初めて扱うので、私の方に不備があると思いますが(ー_ー; 「プロジェクト エクスプローラ」を開き、表が入っているシートを選択しました。 すると、ウィンドウが開いたので、そこに教えて頂いたコードを記述して、閉じました。 上右のプルダウンで(General)となっていましたが、これはworksheetにしなくても良いんですよね? そして、表に戻って適当なセルに教えて頂いた式を範囲を変えてから記述。 リターンしてみましたが、「#VALUE!」と表示されて上手くいっていないようです。 ブック自体を1度保存してから、再度開いた時にマクロを有効にするかどうか聞かれたので、有効にするを選択して、また実行してみましたがやはりできませんでした。 おそらく簡単なことができていないだけの事だと思いますが、アドバイスを頂けると助かります。 またこの処理を表の中のデータを変更しても、その都度自動に処理してくれるようにすることはできるでしょうか? お手数をおかけ致しますが、よろしく御願いします。

cuty_girl
質問者

補足

いろいろと試してみましたが、「#NAME?」と表示されたり、「名前が適切ではありません」など表示されることもあります。 ん~、私にはもうお手上げな状態です。 アドバイスをよろしく御願いします。

関連するQ&A

  • エクセルで数字が入ったセルの値を抽出

    任意1行中のある1列にFALSEと1列だけ数字が入っています(下図参照)。その数字を抽出する関数があれば教えて下さい。 下図の例では、Fの列にB2:E2の範囲の数字「10」を抽出したいのです。マクロを組めば可能なのですが、セルに入力する関数等で簡単に実現できればと思います。 アドバイス宜しくお願いします。

  • EXCELで、文字列の中から数字を抽出したいのですが。

    お世話になります。 EXCELにおいて、A1のセルに文字と数字が入力されています。この中から、最初の数字のみを、B1に抽出したのですが、ご教示お願いします。 文字の長さと数字の位置は、様々な文字列です。 宜しくお願い致します。

  • エクセルの表から条件にあった数字が入力されているセルの行数を抽出する

    A1からD100まで任意の数字が入力されている表があります。 E1にある数字を入力したとき、A1からD100までの表を1行目から順に、2行目、3行目と検索していき、E1の数字よりも小さな数字がはじめて出てきた行数をE2に自動的に入力するようにしたいのですが、関数を使ってそのようなことは可能でしょうか。

  • エクセルで指定した数字以下の数字を抽出して抜き出す

    エクセルで指定した数字以下の数字を抽出して抜き出したいです 例としては A列 B列 いぬ 1 ねこ 2 うし 3 とら 1 はと 2 この表から空いているセルに任意の数字を入力して それ以下の数字を別のセルに抽出したいです たとえば2を入力したら いぬ 1 ねこ 2 とら 1 はと 2 このような結果を別のセルに抽出したいです オートフィルターとマクロは使わない方向でお願いします 似たような質問としては下のURLでしたが http://okwave.jp/qa/q3200952.html?from=recommend これでは指定した数字と同じものしか抽出出来なかったので質問させていただきました

  • セル内からの数字の抽出

    複数のセルがあり、そのセルそれぞれに、 「(文字列A)(数字1) (文字列B)(数字2)」 と入力してあります。(文字列A)と(文字列B)は、定型文字列なので、複数のセルがありますが、同じ文字列が入っています。 一方で、(数字1)(数字2)は、それぞれのセルによって、異なった数字が入っています。 ただし、セルによっては、(文字列A)(数字1)は、入力していないものもあります。 このようなセルが複数ある中から、(数字1)だけを抽出して、セル内に「(数字1)」だけの列を作りたいのですが、何かよい方法はないでしょうか?よろしくお願いします。

  • エクセル 文字列から数字だけを抽出

    エクセル2016の操作について教えて下さい。 セル内の文字列から数字だけを抽出したいです。 例えばAの列にこのような文字列が入っているとします。 高度5km 高度10.1km この中の数字だけを取り出して隣のB列の同じ行に数字だけを表示させる方法がありましたら教えて下さい。 宜しくお願いします。

  • 表から列と行を指定してその中から値を抽出する式

    なかなか言葉で説明しにくいのですが、エクセルの関数で、ある表の列と行を指定してその中から値を抽出する関数はあるでしょうか? 具体的に言うと、行が地域(北海道、東北、関東、、、)で列が箱数(1箱、2箱、3箱、、、)となっている表があってどの地域に何ケース届けると何円になるという表があります。 別シートに表を作って、例えば任意のセルに「北海道」、次の列に「2箱」などと入力規則で入力するようなところを作りました。そして、それぞれ「北海道」、「2箱」というのを見て、そのまた次の列に何円かを抽出する関数を入れたいと思っています。。。それが難しくて分かりません。有用な関数があったら教えてください。具体例などがあればURLなど教えていただけると助かります。 VLOOKUPなどがそれに近いかと思いますが、どうもうまくいきません。複合的に使えばうまくいくでしょうか? よろしくお願いいたします。

  • 表の中に任意の数字または文字があるかないか

    Excel使用です。 例えばA1:B10の表の中に、任意の数字または文字が“ある”か“ない”かを判別したいんですが、いい方法があれば教えてください。

  • 広範囲から数字を抽出する場合

    エクセルで注文表を作っています。 B1から右方向に日付が(5/1,5/2,5/3,5/4・・・) A2から下方向には製品名、B2から右と下方向は空白のセルです。 この空白のセルには、製品が出荷された数量を入力します。 (1製品に付き、出荷されるのは月に1回、数字が入るのは1行毎に1つのセルのみです) このカレンダー式のリストを基に、別のシートに出荷日と出荷数量のみを、それぞれ表示したいと思っています。 広い範囲の中で数字の入力されているセルと、その該当日を抽出したい場合、どのようにしたら良いのでしょうか。 関数でできれば一番ありがたいのですが・・ 宜しくお願いいたします。

  • 特定の文字や数字だけを抽出

    14H010 14S001 14005 14H001B 14H010B 14005 14S004 1)左から2つだけの数字だけを取り出す方法 2)もし左から二つの数字の隣の文字だけ(HやS)を取り出す方法(2文字の可能性もある) 3)真ん中の3つの数字を取り出す方法(010,001,005) 4)右の文字(B)だけを取り出す方法(2文字の可能性もある) それぞれの方法をIF関数とLEN, RIGHT, LEFT, MID関数の組み合わせを使って抽出できるようなのですが、何時間かけても抽出ができません、、、。 たくさんの質問になりますがお答えいただけると幸いです。