• ベストアンサー

Excelでお知恵を貸して下さい(セル内の最大値抽出方法)

Excel2000使用者です。お世話になります。 A1セルからA100セルまでに数値、文字列混在のデータがあります。 この中から最大値を抽出したいのですがやり方を教えて下さい。 例えば..こんな感じでデータだあります。 [A1][A2][A3][A4][A5] [1] [2] [5-8][6][9-10] 見づらいかも知れませんが、A1,A2,A4セルが数値でA3,A5セルが文字列です。 この場合だと、A5セル内の「10」という最大値を数値として他のセルに抽出したいです。 私の乏しい知識では思い浮かびません。 どうかお知恵を拝借させて下さい。 よろしくお願いします。

  • fuji39
  • お礼率96% (138/143)

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.1

こんにちは。 文字列混在の抽出方法は、通常の一般関数では不可能だと思います。以下のコードは、文章の中からでも、最大値を探してきます。 設定の仕方: Alt +  F11 (Altを押しながらF11)を押すと、Visual Basic Editor 画面が出てきます。 次に、メニューの[挿入]-[標準モジュール]と開けて、クリックすると、画面が現れますので、以下のコードを貼り付けて、再び、Alt + F11 で、画面を閉じます。 後は、一般関数のように、 =findfig(範囲) ....(通常、登録されていない関数は小文字になります。) とすれば、最大値が現れます。その範囲が、文章であっても、その中から最大値を探してきます。エラー値は無視されます。ただし、Excelの既存のMAX関数のように、現在の方法では、数値を直接、引数に入れることが出来ません。オプションで、=findfig(範囲,True)で、最小値を探すようにしてみました。  '<標準モジュール> '-------------------------------------------- Function FindFig(範囲 As Range, Optional オプション As Boolean = False)   '文字列混在の中から、最大値を探し出す(オプション=Trueで最小値)   Dim Re As Object   Dim rng As Range   Dim Matches As Object   Dim Match As Object   Dim myValues() As Double   Dim i As Long   Set Re = CreateObject("VBScript.RegExp")   Set rng = 範囲   Application.Volatile   With Re    .Global = True    .Pattern = "(\d+)"    For Each c In rng      If Not IsError(c) Then      Set Matches = .Execute(c.Value)      For Each Match In Matches       ReDim Preserve myValues(i)       myValues(i) = .Replace(Match, "$1")       i = i + 1      Next     End If    Next c   End With     Set Re = Nothing   If オプション = False Then   FindFig = WorksheetFunction.Max(myValues)   Else   FindFig = WorksheetFunction.Min(myValues)   End If End Function '--------------------------------------------

fuji39
質問者

お礼

ありがとうございます。 すばらしいです。大変参考になりました。

その他の回答 (5)

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

数字以外がハイフンだけなら、データ-区切り位置-「区切り記号をハイフン」にすると、数字がセルに分離できて、ハイフンは消えます。左詰になったりしてますが、気にせず、 =MAX(A1:B5)のようにすれば、文字列数字も数とみなして、最大値を計算してくれるようです。 一度やってみてください。

fuji39
質問者

お礼

ご回答感謝致します。 是非参考にさせていただきます。 ありがとうございました。

  • zenjee
  • ベストアンサー率47% (50/106)
回答No.5

No.4の訂正です。B6に入れる式の =MAX(B1:B6)  は =MAX(B1:B5)  の誤りでした。

  • zenjee
  • ベストアンサー率47% (50/106)
回答No.4

A列に入力されている文字列はハイホン(-)がないものは数字のみであり、ハイホンは1個でハイホンの右もまた数字であり、またハイホンの右の数字は仮に5字以内だという前提でお答えします。 まずB列を作業列とし、B1に次の数式を入力して下方向にコピーします。 =VALUE(IF(ISERR(FIND("-",A1,1)),A1,MID(A1,FIND("-",A1,1)+1,5))) この式はA列の文字中ハイホンがないものはそのまま、あるものははハイホンの右の文字を取り出し、式最初のVALUE関数で数値化するという意味です。なお、FINDの部分はSEARCHでもOKだし、式最後の「5」というのは5文字という意味ですから10でも15でも構いません。 以上の後、例えばB6に  =MAX(B1:B6)  と入力し完了です。 これはNo.3kaisendon さんの回答に考え方はほぼ共通していますが、計算式をやや簡略化しています。 なお、A列の文字のうち、ハイホンの左が数字でなく文字(A,Bなど)である場合も成立しますが、ハイホンがなくて数字の左に文字があったりハイホンの右に文字があったりするとこの式が成立しないことはもちろんです。

  • kaisendon
  • ベストアンサー率44% (114/257)
回答No.3

こんにちは 「文字列」はご質問の例にあるように 2つの正の数字が - で区切られている物のみ、という前提で。      A     B 1    1     1 2    2     2 3   5-8     8 4    6     6 5   9-10    10 どこか空いている列(どこでもいいですが、仮にB列)を作業列としました。 B1に入った式は =IF(ISERROR(FIND("-",A1)),A1*1,MAX(LEFT(A1,FIND("-",A1)-1)*1,RIGHT(A1,LEN(A1)-FIND("-",A1))*1)) この式を下方向にフィルコピー (フィルハンドルのダブルクリックでもいいです) とした後に、任意のセルで =MAX(B1:B5) とすれば質問内容に見合う形では、ご希望の結果が得られると思います。 ただし、この方法では あ6 10-5-9 1a 等々予期せぬ物には対応していません。 Wendy02さんの作ったユーザー定義関数ならばこれらの物にも対応しているようです^^

fuji39
質問者

お礼

ご回答感謝致します。 是非参考にさせていただきます。 ありがとうございました。

回答No.2

難しい方法は思い浮かびませんが、結果オーライ出よければ、次のような方法はいかがでしょうか?[9-10]のように、間に入る文字が[-]であるとしてですが・・・。 該当する列を選び、「データ」「区切り位置」で「区切り文字」を「その他」(ほかのチェックはすべて外す)「-」に設定してやれば、[5]と[8]が二つの列に切り離されます。 その後で、max関数で取り出してはいかがでしょう?

fuji39
質問者

お礼

ありがとうございます。 是非参考にさせていただきます。

関連するQ&A

  • 【エクセル】セル内の文字列から数値のみを抽出する方法

    A1●●●●1111 A2××××××222222 A3■■■■■■■■■■■1234567890 上記のように文字列と数値が一続きになっているデータが各セルに入っています。 文字列+数値の順番は決まっていますが、それぞれの文字数は決まっていません。数値はマイナスの場合もあります。 また、境にカンマやスペースなどもないため、テキストファイルウィザードも使えません。 このデータから、数値のみを抽出する方法がありましたらご教示下さい。 よろしくお願いします。

  • エクセルで文字列の最大値を抽出する方法

    文字列の最大値を抽出したいのですが 4つのセルにA、B、C、Dが入力されている場合の文字列の最大値Dを抽出する関数式を知りたい エクセルヘルプで見るとMAXAとなっていたのですが抽出する答えは”0”となってしまいます。

  • エクセルのセル内から数字だけを抽出する方法を教えて下さい

    エクセルのセル内から数字だけを抽出する方法を教えて下さい あるデータの列(備考欄)には様々な文字が入っていて、 その中に●名(●は数字)が入っています その数字だけを取り出して 別の列に移す関数を教えて下さい ※この列には他の数字は入っていません、最大で2ケタです よろしくお願いします

  • エクセル-抽出したデータや文字列を消さない方法

    他のファイルから例えばVLOOKUP関数で数値や文字列を抽出する場合、そのファイルが消えた場合抽出したデータや文字列も消えてしまいます。ファイルが消えてもデータや文字列を残すには別のセルにコピーして形式を選択して貼り付ければよいのですが、そうしなくても簡単に別のセルに数値や文字列として残す方法はないでしょうか。回答よろしくお願いいたします。

  • Excel 文字列の抽出

    Excel初心者です。 1つのセルに以下のデータが入力されています。 A:文字列B:文字列C:文字列D:文字列 このセルの「C:」から「D:」の間にある文字列を 他のセルに抽出する方法を教えてください。 宜しくお願いいたします。

  • Excelセル内の条件付最大値抽出方法で困っています

    Excel2003を使用しています。 800件ほどのデータで、縦一列に、カテゴリをあらわす2桁もしくは3桁のアルファベットと数字の組み合わせのデータが入っています。 例) kim2 kim3 kim4 kim343 hon209 hon210 coi4 coi5 sys92 coi9 coi59 ur2004 ur2005 これについて、カテゴリ(kim、honなど)ごとの最大値を求めようと思っています。 カテゴリごとにセルを一列足して、左の文字を抜いた値をセルに入れ、その列ごとの最大値を求めるという方法はわかるのですが、今後カテゴリが増えていくときのために列を増やさなくても計算できる方法を探しています。 表と離れたところに、カテゴリの値を入れたセルを置き、横のセルに最大値が入るイメージで作成しています。 ご教示いただけると助かります。

  • EXCEL セル内の数値から、5桁目だけを抽出する方法について

    EXCELシートのセル内に、以下のような30桁からなる数値が入力されている 列が複数あります。 この列内の数値の右端から「5桁目」だけ、または左端から「10桁目」だけを 抽出したいと思っているのですが、EXCELの仕様で数値の先頭にある「0」は 表示されないため、各セルごとに表示されている数値の桁数はバラバラです。 数値の先頭に「0」が付いているセルが多数あり桁数が不揃いなことと、 数値が30桁もあるため、セルの数値表示が「1E+29」のように「E+29」で表示 されてしまっており、うまく数値を抽出することが出来ません。 ◆元データ   「列1」     (1) 1234567890  →(本当は30桁:000000000000000000001234567890)    (2) 111111111100000000001111111111   (3) 1      →(本当は30桁:000000000000000000000000000001)  (4) 123456789012345678909999999999  ◆右端から5桁目だけを抽出する   「列1」      (1)  6      (2)  1      (3)  0      (4)  9   お手数お掛けいたしますが、ご指導下さいますよう宜しくお願い致します。

  • 【Excel】特定セルを抽出したい(´・ω・`)

    いつもお世話になっております。 A1からA100まで縦にズラッと文字列が入ったセルがあるとします。 その中に赤のフォントで入力されているセルがいくつかあります。 それらを抽出して違う列、もしくは別シートに一覧表示させたいのです。 マクロの経験も薄いため思いつきません。お知恵を貸してください。m(__)m

  • Excelにて皆様の知恵をお貸してください。

    はじめまして、いつも皆様には大変お世話になっております。 早速質問させて頂きます。(OS98/Excel2000) ★まずA1セルにイロイロな名詞(下記名詞のひとつ)を入力するとします。 (例)アイシクル・ヒアイシテル・モリノアイノリ・アイガル・ボヤンスキー・ドドッコイ・モロロン ★その後A3のセルに1以上の数値(実数)を入力します。 ★そのA3のセルに数字が入力された時、A1セルの文字列の中の何文字かを検索し、(例・アイ)A5セルにA1文字列の中に『アイ』があるなら●、『アイ』が無いなら○と表示させる。 にはどのような関数を使えばよいのでしょうか? (どのような関数を組み合わせれば良いのでしょう?) 是非皆様の知恵をお貸しいただけると幸いです、よろしくお願いいたします。

  • エクセル2000で文字列から数値を抽出したい。

    エクセル2000で文字列から数値を抽出したい。 ワークシートのA列に下記の文字列が入力されています。 A1セル="123456 日本男子 54,321 7,654,321 12,345" A2セル="234567 東京都子 1,234 2,345 5,321" A3セル="345678 大阪太郎 99 689 9,876" データ間はスペースで区切られています。 後方2番目の数値をB列に取出す方法を教えて下さい。 B1セル=7,654,321 B2セル=2,345 B3セル=689 よろしくお願い致します。

専門家に質問してみよう