A  B  C  D  E  F  G
1  0  あ  0  0  0  0  0
2  い  0  0  0  0  0  0
3  0  0  0  0  0  う   0
4  0  0  0  0  0  え  お
のように1行目には「あ」という文字だけが文字値としてあるのでこれをF1のセルに「あ」と抽出したいのですが、そういった関数はありますか?IF関数で試みたのですが、例で出したような「あいうえお」のような決まった文字ではなく、その文字はバラバラで検索するものを指定することができません。
また、4行目のように「え」と「お」がある場合はF4に「え」F5に「お」と抽出したいと思っています。
どなたかわかる方、教えてください。

A 回答 (6件)

   A    B      C~E     F     G    H


1  番号  家紋名                     柏
2  1   いたどり           該当なし      酸漿草
3  2   ひげ丸揚羽蝶       揚羽蝶       桔梗
4  3   ほいのし           該当なし      蛇の目
5  4   むくみ稲妻         稲妻        鷹の羽
6  5   むくみ花菱         花菱        稲妻
7                                揚羽蝶
8                                花菱

1)H列を作業列として、ジャンル一覧を入力します(別に他のシートでもいいですよ)
2)F2の式
F2=IF(SUMPRODUCT(COUNTIF(B2,"*"&$H$1:$H$8&"*")),LOOKUP(1,0/COUNTIF(B2,"*"&$H$1:$H$8&"*"),$H$1:$H$8),"該当なし")
★下にコピーすれば、うえのように表示されます

★ところで、下はどうなりましたか?
http://oshiete1.goo.ne.jp/qa3356739.html
>検索エンジンなどである文字を打ち込むところがあって、検索というボタンをクリックしたら、ドロップダウンリストに表示され、指定したセルにその文字が入るという感じです
★それに近い回答になっていないでしょうか?

この回答への補足

回答ありがとうございます。
ジャンル分けの数式ありがとうございます。
またまた、欲を言うようですが、1つの家紋名でジャンルが重複してしまうものもあります。例えば、「亀甲に花菱」という家紋は「亀甲」と「菱」というジャンルで重複しています。どちらとも抽出可能な数式はあるでしょうか?理想としては、F列に1つ目のジャンルで、G列が2つ目、H列が3つ目といった感じです。最大3つの重複です。

http://oshiete1.goo.ne.jp/qa3356739.html
の件ですが、もちろん作って頂いた関数で対処できそうなのですが、またまた、欲を言えば、ユーザーフォームなど使ってセル上でないところでできれば、さらに見やすく、使いやすいかと思って、あのような回答をいたしました。

補足日時:2007/09/24 19:13
    • good
    • 0

>ABCDE列には文字やら数字やらが入っています。


ここがまだ曖昧です。実例を挙げていただければ回答の精度も上がるのに残念です。

回答した式で補足されたとおりの表を作成して試しましたが、R2は「あ」、S2は「空白」になりました。これは期待する結果になっていますか?

すると実際のシートのセルの値は、#01の補足に書かれた表とは異なり、
1)セルの書式が「文字列」になっている
2)数字が「全角文字」になっている
3)「0a」のような数字、文字の混在になっている
となっている要因が考えられます。特に1)を確認してみてください。

私の回答した式はISTEXT関数で文字列を拾うようにしていますので、数値として入力されていれば、式で拾うことはないはずですが、前提が違うなら使えないかもしれません

この回答への補足

何度もすいません。
では詳しく書かせていただきます。
   A   B       C          D      E    
1 番号 家紋名   ファイル名    パターン 亀甲の有無
2 1  いたどり    いたどり.EMF    C     0
3 2  ひげ丸揚羽蝶 ひげ丸揚羽蝶.EMF  C     0
4 3  ほいのし    ほいのし.EMF    C     0
5 4  むくみ稲妻   むくみ稲妻.EMF   C     0
6 5  むくみ花菱   むくみ花菱.EMF   B     0
F以降は記述のとおりです。
F2には
=IF(COUNTIF(B2,"*柏*"),"柏",IF(COUNTIF(B2,"*酸漿草*"),"酸漿草",IF(COUNTIF(B2,"*桔梗*"),"桔梗",IF(COUNTIF(B2,"*蛇の目*"),"蛇の目",IF(COUNTIF(B2,"*鷹の羽*"),"鷹の羽",IF(COUNTIF(B2,"*橘*"),"橘",IF(COUNTIF(B2,"*引両*"),"引両",0)))))))
G2には
=IF(COUNTIF(B2,"*茗荷*"),"茗荷",IF(COUNTIF(B2,"*目結*"),"目結",IF(COUNTIF(B2,"*木瓜*"),"木瓜",IF(COUNTIF(B2,"*井筒*"),"井筒・井桁",IF(COUNTIF(B2,"*井桁*"),"井筒・井桁",IF(COUNTIF(B2,"*梅*"),"梅",IF(COUNTIF(B2,"*沢瀉*"),"沢瀉",0)))))))

といったIF関数が入っています。
これは、家紋名をジャンルごとに分けたいからです。面倒だったのですが、やり方がわからなく、このIF関数を繰り返し、F~Qまでジャンルになる文字を抽出しています。このジャンルは80ほどあるためIF関数で7つごとに分けています。本当の理想で言えば、このジャンルはSheet3のA列に並んでいるのでこれと照合し、一致したら、ジャンル名をF列に表す。というふうにしたかったのですが、ジャンルが1つずつでいいなら別ですが、ジャンルが重なってしまう家紋もあって、さっぱりわかりませんでした。
まだ、説明不足な点があるかと思いますが、ご教授お願いします。

補足日時:2007/09/21 21:55
    • good
    • 0

#01です。


R1セルに
=IF(SUMPRODUCT(ISTEXT($A1:$Q1)*1)>COLUMN(A1)-1,INDEX(1:1,LARGE(INDEX(ISTEXT($A1:$Q1)*COLUMN($A1:$Q1),),SUMPRODUCT(ISTEXT($A1:$Q1)*1)-COLUMN(A1)+1)),"")
を貼り付けて、右方向および下方向にコピーしてください

COLUMN(A1)は実際のセルを指しているのではなく、すこし違う目的で使用しています。「R列が1番目、S列が2番目…の文字を格納する」ための「順番」を生成するために使用しています

この回答への補足

早速の回答ありがとうございます。
申し訳ないです。細かく説明をしなければなりませんでした。
ABCDE列には文字やら数字やらが入っています。
教えて頂いた数式をR2に入力したら、A2の文字が出てきました。さらに、S2にしたら、B2が出てきました。私が求めているのは、F~Q列にある数字・文字の中から文字を抽出することです。
説明不足で申し訳ないです。

補足日時:2007/09/21 19:48
    • good
    • 0

◆少し訂正です


=IF(COLUMN(A1)>COUNTIF($A1:$G1,">*"),"",INDEX($A1:$G1,SMALL(INDEX(SUBSTITUTE(($A1:$G1>"*")*1,0,10^5)*COLUMN($A1:$G1),),COLUMN(A1))))
    • good
    • 0

◆こんな式もありますよ


=IF(COLUMN(A1)>COUNTIF($A1:$G1,">*"),"",INDEX($A1:$G1,SMALL(INDEX(SUBSTITUTE((A1:G1>"*")*1,0,10^5)*COLUMN(A1:G1),),COLUMN(A1))))
    • good
    • 0

関数について理解されていませんね。

それは後で説明します

J1セルに
=IF(SUMPRODUCT(ISTEXT($A1:$G1)*1)>COLUMN(A1)-1,INDEX(1:1,LARGE(INDEX(ISTEXT($A1:$G1)*COLUMN($A1:$G1),),SUMPRODUCT(ISTEXT($A1:$G1)*1)-COLUMN(A1)+1)),"")
を貼り付けて下方向、および右方向にコピーしてみてください。
すると表示する位置は希望するF列、G列ではないものの期待に添う結果が出ると思います

でもF列にこの関数を埋め込むことはできません。
関数は入力されたセルの値を変更することはできないのです。

>4行目のように「え」と「お」がある場合はF4に「え」F5に「お」と抽出したいと思っています。
4行目のF列は「え」が入力されています。従って関数式をF4に入力するわけにはいきません。もしF4に関数式を入力するなら「え」を入力するわけにはいきません。ご理解いただけますか?

抽出するセルは元のデータとは別の場所でなければならないのです(先ほど例に挙げたJ列なら、データ範囲外なのでOKです)

この回答への補足

回答ありがとうございます。
>4行目のF列は「え」が入力されています。従って関数式をF4に入力するわけにはいきません。
申し訳ないです。勘違いでした。H4と書くつもりでした。

教えて頂いた関数を試してみました。新しいBookに私が書いた例の通りすれば、もちろん理想通りになったのですが、私が関数を貼り付けたい番地が異なるためうまくいきません。
再度教えてください。
  FGHIJKLMNOPQ
2 0あ0000000000
3 00い000000000
4 000000000う00
5 0000000000えお
という並びで、R2,R3,R4というふうに数式を入れていきたいと思います。
自分なりにいじってみたのですが、COLUMNという関数がうまくいってないのかと試行錯誤中です。できれば、教えてください。

補足日時:2007/09/21 19:02
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qexcelで複数条件のIF関数についてご教示ください。G4が0以上13未満で、かつC2が0なら0、C

excelで複数条件のIF関数についてご教示ください。G4が0以上13未満で、かつC2が0なら0、C2が1以上11未満なら5000、C2が11以上21未満なら7000、というような関数を組みたいのですが、上手くいかず困っております。
お詳しい方、ご教示くださいませ。

Aベストアンサー

こんにちは!

今回の質問では区分けの段階は2区分だけのようなので
IF関数のネストで十分対応できると思いますが、一案です。
↓の画像のように別シート(画像はSheet2)に表を作成しておきます。

そして表示したいセルに
=IF(AND(G4>=0,G4<13),VLOOKUP(C2,Sheet2!A:B,2,1),"")

としてみてはどうでしょうか?

※ 区分けが増える場合は表の段階を増やしていきます。

※ C2セルが21以上の場合は「0」が返ります。m(_ _)m

Q「7月4日」や「07月04日」ではなく「 7月 4日」と表示させたい。(エクセル表示)

こんばんはよろしくお願いします。
エクセル2000で、日付が入力されているセルの表示を
7月4日の場合、「 7月 4日」と表示させるにはどうしたらよいのでしょうか?
(つまり十の位に半角スペースが入ってる状態です。)

同様に通し番号も9までの数字も「1」ではなく「 1」と表示させるにはどうすればよいのでしょうか?

いつもありがとうございます。

Aベストアンサー

#3ですが、ちょっと訂正です。
後半の「月日均等幅書式」の方コードを1ヶ所(12行目)訂正しましたので、こちらを使ってください。

Sub 和暦日付均等幅書式()
Dim Rng As Range
Dim Syoshiki As String
Dim Hani
On Error Resume Next
Set Hani = Application.InputBox(Prompt:=vbLf & "日付け入力範囲を" & _
    "選択して、[OK]を押してください。", Type:=8)
If Err.Number > 0 Then Exit Sub
For Each Rng In Hani
  Syoshiki = ""
  If IsDate(Rng.Value) Then
    If Val(Format(Rng.Value, "e")) < 10 Then
      Syoshiki = "ggg e年"
    Else
      Syoshiki = "ggge年"
    End If
    If Month(Rng.Value) < 10 Then
      Syoshiki = Syoshiki & " m月"
    Else
      Syoshiki = Syoshiki & "m月"
    End If
    If Day(Rng.Value) < 10 Then
      Syoshiki = Syoshiki & " d日"
    Else
      Syoshiki = Syoshiki & "d日"
    End If
    Rng.NumberFormatLocal = Syoshiki
    Rng.Font.Name = "MS ゴシック"
  End If
Next Rng
End Sub

#3ですが、ちょっと訂正です。
後半の「月日均等幅書式」の方コードを1ヶ所(12行目)訂正しましたので、こちらを使ってください。

Sub 和暦日付均等幅書式()
Dim Rng As Range
Dim Syoshiki As String
Dim Hani
On Error Resume Next
Set Hani = Application.InputBox(Prompt:=vbLf & "日付け入力範囲を" & _
    "選択して、[OK]を押してください。", Type:=8)
If Err.Number > 0 Then Exit Sub
For Each Rng In Hani
  Syoshiki = ""
  If IsDate(Rng.Value) Then
    If Val(...続きを読む

QExcel特定文字抽出の関数を教えてください。

Excelの特定文字からはじまる文字列を抽出したいです。

aa/bb(aa/は固定ですがbbは文字数を含めて可変します)
また、aa/bbの前後にはほかの文字列(ccccやdddddなど)が入っています。
下記のような感じですが、aa/*****だけを抽出し何件あるか調べたいです。
最終的に結果のようにしたいのですが、関数かマクロを教えていただけますでしょうか?
よろしくお願いします。

・シート
A1 ccc aa/bb ddddd     B1 gada aa/fasd haadf
A2 rrrr aa/cccc nnaxxx B2 hjhafd aa/bb hfahfdha




・結果 件数
aa/bb 2
aa/cccc 1
aa/fasd 1

Aベストアンサー

 関数と作業列を使用する方法です。
 今仮に、元データの文字列がSheet1に入力されていて、Sheet3のA~E列を作業列として使用して、Sheet2のA列に抽出した文字列を、Sheet2のB列に件数を表示させるものとします。

 まず、Sheet3のA2セルに次の関数を入力して下さい。

=IF(COUNTIF(OFFSET(Sheet1!$A:$A,,ROW()-ROW(A$2)),"*?"),MATCH("*?",OFFSET(Sheet1!$A:$A,,ROW()-ROW(A$2)),-1),"")

 次に、Sheet3のB1セルに次の関数を入力して下さい。

=SUM($Sheet3A$1:$A1)

 次に、Sheet3のB1セルをコピーして、Sheet3のB2セルに貼り付けて下さい。
 次に、Sheet3のA2~B2の範囲をコピーして、同じ列の3行目以下に貼り付けて下さい。
 次に、Sheet3のC1セルに次の関数を入力して下さい。

=IF(ROW()>SUM($A:$A),"",OFFSET(Sheet1!$A$1,ROW()-1-VLOOKUP(ROW()-1,$B:$B,1),MATCH(ROW()-1,$B:$B)-1))
 次に、Sheet3のE1セルに次の関数を入力して下さい。

=IF(ISNUMBER(FIND(" aa/"," "&$C1)),IF(COUNTIF($C$1:$C1,"*"&MID($C1,FIND(" aa/"," "&$C1),FIND(" ",$C1&" ",FIND(" aa/"," "&$C1)+LEN(" aa/")-1)-FIND(" aa/"," "&$C1))&"*")=1,MID($C1,FIND(" aa/"," "&$C1),FIND(" ",$C1&" ",FIND(" aa/"," "&$C1)+LEN(" aa/")-1)-FIND(" aa/"," "&$C1)),""),"")

 次に、Sheet3のD1セルに次の関数を入力して下さい。

=IF($E1="","",COUNTIF($E:$E,"*?")-COUNTIF($E:$E,">"&$E1))

 次に、Sheet3のC1~E1の範囲をコピーして、同じ列の2行目以下に貼り付けて下さい。

 次に、Sheet2のA2セルに次の関数を入力して下さい。

=IF(ROWS($2:2)>COUNT(Sheet3!$D:$D),"",VLOOKUP(ROWS($2:2),Sheet3!$D:$E,2,FALSE))

 次に、Sheet2のB2セルに次の関数を入力して下さい。

=IF($A2="","",COUNTIF(Sheet3!$C:$C,"*"&$A2&"*"))

 次に、Sheet2のA1~B1の範囲をコピーして、同じ列の2行目以下に貼り付けて下さい。

 以上です。

 関数と作業列を使用する方法です。
 今仮に、元データの文字列がSheet1に入力されていて、Sheet3のA~E列を作業列として使用して、Sheet2のA列に抽出した文字列を、Sheet2のB列に件数を表示させるものとします。

 まず、Sheet3のA2セルに次の関数を入力して下さい。

=IF(COUNTIF(OFFSET(Sheet1!$A:$A,,ROW()-ROW(A$2)),"*?"),MATCH("*?",OFFSET(Sheet1!$A:$A,,ROW()-ROW(A$2)),-1),"")

 次に、Sheet3のB1セルに次の関数を入力して下さい。

=SUM($Sheet3A$1:$A1)

 次に、Sheet3のB1セルをコピーして、Sh...続きを読む

Qエクセルで、MID関数で抽出した文字を独立させたい

エクセル初心者のため、お見苦しい文章で申し訳ありません。

WORDに入力されたアンケート結果をEXCELに移した際に、
例えば1つのセルにある「A:50% B:25% C:25%」という文字列を、
MID関数を使ってそれぞれ別のセルに抽出しました。
(それぞれ、"=MID(A2,3,3)"、"=MID(A2,10,3)"、
"=MID(A2,17,3)"という感じです)

設問がいくつもあるので、
その関数を十字でコピーしたほうが楽かと思いまして・・・

ところがそもそもグラフを作りたくてエクセルに移したのですが、
「50%」というのはただの関数の結果であって、
数字どおりのグラフが作れないと気づきました。

これを、「50%」という文字列だと
認識させてグラフを作る方法は何かあるでしょうか?
それともやっぱりめんどくさがらずに、
1から打ち込んだほうが早いのでしょうか・・。

わかりづらい質問で申し訳ありません。
よろしくお願いいたします。

Aベストアンサー

(1)数字だけを抜き出す。
 一つ目の50なら=VALUE(MID(A2,3,2))
(2)表示形式のユーザ定義で%を付けて表示する。
 0"%"

または、

(1)数字だけを割合として抜き出す。
 一つ目の50なら=VALUE(MID(A2,3,2))/100
(2)表示形式に初めからあるパーセント表示を使う。
 0%

こんなところでどうでしょう。

QSUM関数の合計が0の場合0を表示したくない

セルの書式設定→表示形式→ユーザー設定で#で
0を表示しないのはわかるのですが

セルの書式設定→表示形式→ユーザー設定で
"("#")"を設定して
数字を入力しただけで(かっこ)の中に数字は表示されるように
設定しているセルのSUM関数の合計のセルが0の場合

何も表示したくないのですが
(0)と表示されてしまいます。

何も表示されないようにするにはどうしたらいいですか?

Aベストアンサー

=IF(COUNT(SUMの合計の範囲)=0,"",SUM(合計の範囲))
SUMの合計すべき範囲に数値がない時は、空白とし、それ以外は合計する


人気Q&Aランキング

おすすめ情報