グッドデザイン賞を受賞したウォーターサーバー >>

こんにちは
わかりにくいタイトルですみません。

ある列に
以下の様な文字を入力し、






各文字に表示優先順があるものとして
一番優先度の高い文字を表示させたいのですが、
現状、IF文で各文字を数値に置き換えることにより
優先度を持たせMAXの結果をIF文で文字に戻すといった方法で取り組んでいます。
もっとシンプルな方法があるのではと思い調べてますが、
見つかりません。
良い方法があればご教示願います。
よろしくお願いします。

このQ&Aに関連する最新のQ&A

Excel 文字」に関するQ&A: Excel 文字サイズ変更

A 回答 (4件)

対象範囲をA1:A10にしています。


途中に未入力セルがあれば無視します。(大きい値を割り当てています)
これも配列数式です。


=MID("$|#A+",MIN(IF(A1:A10="",99999,FIND(A1:A10,"$|#A+"))),1)

この回答への補足

上の件、勘違いで問題ありませんでした。
FINDだけを配列数式にしてもだめですよね。
ありがとうございました。

値無しと思っていたところが実は空白だったためおかしかった様です。ISBLANKに変更して対応しました。
お世話になりました。

補足日時:2004/02/29 15:38
    • good
    • 0
この回答へのお礼

ありがとうございます。
ためさせていただきましたが
おそらくFIND(A1:A10,"$|#A+")が正しく機能できていない様です。
配列数式で上記の処理を行うと複数入力時はどの様な
値が返ってくるのでしょうか?

お礼日時:2004/02/29 15:13

A列に文字があるとして、A1の先頭ならMID(A1,1,1)を2番目ならMID(A1,2,1)で1文字(この質問は1文字だけを問題にするとします)を取り出せます。

先頭の1文字だけを問題にして、1文字しか入っていないとします。
その文字を優先順位のコードを振るには、Find(A1,"文字列")として、その文字列に並べる文字の順を、調整します。
"$|#A+ "なら$は1、|は2、#は3、Aは4、+は5、スペースは6というコードを、=FIND(A1,"$|#A+ ")でB列に各対応コードを返えさせられます。(""は便宜上、スペースに置換しておかないと都合が悪い。)
そしてB列のMINを取ると一番優先度の高いコードが得られます。=CHOOSE(”コード","$|#A+ ")で復号できます。
コードのところかMIN(・・)が入ります。
(データ)質問と違う例ですが、A列に
a
d
f
g
j
(関数式)
B1セルに=FIND(A1,"acefgbdj")
B2以下に複写
a1
d7
f4
g5
j8
となる。
一番優先度の高い文字は
=CHOOSE(MIN(B1:B5),"a","c","e","f","g","b","d","j")
でaになる。
一番優先度の高いのはaと言うのは、自明(自分で決めている)のですが。
常例でaの行を削除するとfが先頭優先度となり、fが表示されます。
    • good
    • 1
この回答へのお礼

ご返答ありがとうございます。
あまり関数を知らなかったので
上記の内容を全てIF文でやっていたので大変でした。
ありがとうございます。

お礼日時:2004/02/29 15:42

  A  B


1 |  式
2 #
3 A
4 A
5 |

A1:A5に対象文字列が入力されているとします。
$→|→#→A→+ の順に表示優先順があるとして、B1に最優先の文字を表示します。
 ※対象文字列は1文字としています。2文字以上ならユーザ定義関数を作ってしまいます。
 ※表示の優先度合いを定義した文字以外は入力されないとします
 

B1の式

 =MID("$|#A+",MIN(FIND(A1:A5,"$|#A+")),1)

上記は配列数式です。
数式バーに算式を入力し、Ctrl+Shift+Enter で登録します。これで配列数式として登録されます。Ctrl+Shift+EnterはCtrlキーとShiftキーを押しながらEnterキーを押すことです。配列数式として登録されれば、数式バー内で{算式}のように算式が{ }で囲まれます。
登録に失敗したら、そのセルでファンクションキーF2を押して編集モードにして、再度Ctrl+Shift+Enterとしてみて下さい。算式を修正した時も同様に登録します。

この回答への補足

ご返答ありがとうございます。
なるほど!っていう様な式です。

が、重ね重ね説明不足申し訳ないです。
何も入力されないセルもありまして・・
それは省きたいのです。すみません。
スペースを入れとけば教えていただいた式で
問題無いとは思うのですが・・・

補足日時:2004/02/28 20:46
    • good
    • 0

VBAでないとしての話ですが・・・


A列の1~5に「$、|、#、A、+」が入力されているとして、
B1に「=CHAR(MAX(CODE(A1),CODE(A2),CODE(A3),CODE(A4),CODE(A5)))」
勘違いしているかな?

この回答への補足

ご返答ありがとうございます。
言葉足らずでした。申し訳ないです。
入力される文字は5種類ほどですが、
入力可能なセルはそれ以上です。
また、優先順位も文字コードで決定されれば楽ですが、
別の取り決めにより決定されます。
上手くく説明できませんが、例えば
F(ファースト) > B(ビジネス) > Y(エコノミー)みたいな感じです。

よろしくお願いいたします。

補足日時:2004/02/28 20:05
    • good
    • 0

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人はこんなQ&Aも見ています

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

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

Qエクセルである表から優先順位をつけて値を別のセルに表示させるにはどうしたらいいですか?

エクセルで下のような表から

  |1月 |2月 |3月 |4月 |
------------------------------
A | ○ | ○ | ○ | ○ |
------------------------------
B |  |  |  |  |
------------------------------
C |  |  |  |  |
------------------------------ Aだけ○であれば
   表とは離れたセル| A | ←Aと別のセルに反映


  |1月 |2月 |3月 |4月 |
------------------------------
A | ○ |   | ○ | ○ |
------------------------------
B |  | ○ |  |  |
------------------------------
C |  |  |  |  |
------------------------------ ひとつでもBに○があれば
   表とは離れたセル| B | ←Bと別のセルに反映


  |1月 |2月 |3月 |4月 |
------------------------------
A | ○ |   | ○ |   |
------------------------------
B |  | ○ |  |  |
------------------------------
C |  |  |  | ○ |
------------------------------ ひとつでもCに○があれば
   表とは離れたセル| C | ←Cと別のセルに反映

優先順位 C>B>A

このように反映させるためには
どのような関数で設定すればよろしいでしょうか?

分かる方是非教えていただけますでしょうか?
宜しくお願い致します。

エクセルで下のような表から

  |1月 |2月 |3月 |4月 |
------------------------------
A | ○ | ○ | ○ | ○ |
------------------------------
B |  |  |  |  |
------------------------------
C |  |  |  |  |
------------------------------ Aだけ○であれば
   表とは離れたセル| A | ←Aと別のセルに反映


  |1月 |2月 |3月 |4月 |
------------------------------
A | ○ |   | ○ | ○ |
------------------------------...続きを読む

Aベストアンサー

No2.です。
ごめんなさい、余計なゴミが入っていました。正しくは↓です。

=IF(MAX(A2:A4)=0,"なし",INDIRECT("B"&MAX(A2:A4)))

Qエクセルで右隣のセルより優先して表示したいときは?

エクセル操作で困ってます。

入力したデータがセル幅よりも長い場合、
右隣のセルにデータが入っていなければはみ出して表示されますが、
右隣にセルが入っている場合は途切れて表示されてしまいます。

セル幅は変えないで右隣にくい込むように表示することは可能でしょうか。

Aベストアンサー

No.1さんの言うように、食い込ませる事は無理だと思われます。
ただ、どうしてもという事であれば、
食い込んだみたいに見せるという方法はどうでしょうか?

A1の第1条の切れている”条”という字をB1の先頭に書き入れ、
A1を右揃えにすれば、何となく食い込んだみたいに見える;;
駄目でしょうか、、、?

QExcel関数(通常はA列優先で、0の時はB列)

A列とB列に任意の数値が並んでいます。C列にはA列の数値を優先で表示したい。しかし、A列の数値が0(ゼロ)の場合はB列の数値を表示したいと思っています。どうしたらよいか、何方か教えください。よろしくお願いいたします。

Aベストアンサー

こんにちは。maruru01です。

A1~とB1~に数値がある場合、C1に、

=IF(A1=0,B1,A1)

と入力して、下の行へコピーします。
この場合、A列が未入力の場合は、B列の値が表示されます。
A列が未入力の場合、A列を優先(つまりC列は空白)するなら、

=IF(LEN(A1),IF(A1=0,B1,A1),"")

です。

QエクセルのIF関数で、文字が入力されていたならば~

エクセルのIF関数で文字が入力されていたならば~、という論理式を組み立てたいと思っています。

=IF(A1="『どんな文字でも』","",+B1-C1)

A1セルに『どんな文字でも』入っていたならば、空白に。
文字が入っていなければB1セルからC1セルを引く、という状態です。

この『どんな文字でも』の部分に何を入れればいいのか教えてください。

またIF関数以外でも同様のことができれば構いません。

宜しくお願いします。

Aベストアンサー

=IF(ISTEXT(A1),"",B1-C1)

でどうでしょうか?

Qエクセルでの指定文字 カウントについて

エクセルで並んだデータでの指定した名前だけの個数をカウントするにはどうすればいいのでしょうか?

山田 高橋 佐藤
高橋 梅田 赤田
 西 山田 梅田
佐藤 山田 梅田

名前が並んだデータで「高橋」という名前が何個あるのかをカウントしたいのですがどうすればいいのでしょうか?

Aベストアンサー

 データは入力されているセルの範囲を「A1:C4」とすれば、

=COUNTIF(A1:C4,"高橋")

Q【エクセル】IF関数  AまたはBならばCと表示

引き続き、お世話になります。

IF関数の使い方について教えてください。

A1セルが「1」ならば B1セルに「●」を表示 ←これは出来ます。

A1せるが「1」または「6」ならば B1セルに「●」を表示←これができません。

ANDを組み合わせるのですよね???
どのようにすればいいか、ご存じの方教えてください。

Aベストアンサー

B1のセルに、以下の数式を入力します。

=IF(OR(A1=1,A1=6),"●","")

Q【エクセル関数】(B列優先で)二つのセルの統合

お世話になります。

エクセルにおいて、例えば、A列とB列、二つを統合するには、C列に、関数=”A1&B1”のようにして、併せていけばいいというところまで学習しました。(超基礎ですみません。)

この際、C列には、B列に入っているワードを優先して、B列が空白の時のみ、A列の文字を表記したい場合、どのような対応をしたらよいのでしょうか。

恐れ入りますが、よろしくお願い致します。

Aベストアンサー

セルC1に、セルA1とセルB1を評価した結果を格納として。

=IF(B1<>"",B1,A1)

ただし連結するものが空白(正確にはNULL)なら
=B1&A1
でも変わらないように思います。

Qエクセルで、条件に一致した行を別のセルに抜き出す方法

エクセルで、指定した条件に一致するセルを含む行をすべて抜き出す方法が知りたいです。

たとえば、

<A列> <B列> <C列>
7/1 りんご 100円
7/2 ぶどう 200円
7/2 すいか 300円
7/3 みかん 100円

このような表があって、100円を含む行をそのままの形で、
別のセル(同じシート内)に抜き出したいのですが。

7/1 りんご 100円
7/3 みかん 100円

抽出するだけならオートフィルターでもできますが、
抽出結果を自動的に、別の場所に、常に表示させておきたいのです。

初歩的な質問だと思いますが、検索しても分からなかったので、よろしくお願いします。

Aベストアンサー

同じ質問が結構よく出てますが、そんなに初歩的でもありません
別シートのA1セルに「100円」と入力し、そのシートの任意のセルに以下の式を貼り付けて下さい。後は、下方向、右方向にコピー。
日付のセル書式は「日付」形式に再設定してください

=IF(COUNTIF(Sheet1!$C:$C,$A$1)>=ROW(A1),INDEX(Sheet1!A:A,LARGE(INDEX((Sheet1!$C$1:$C$500=$A$1)*ROW(Sheet1!$C$1:$C$500),),COUNTIF(Sheet1!$C:$C,$A$1)-ROW(A1)+1)),"")

データ範囲は500行までとしていますが、必要に応じて変更して下さい

Qエクセル 入力した文字が隣の列にはみ出した場合表示される場合と表示されない場合がある

エクセルで文字を入力する際、
セルの長さ以上に文字を入力するとして、
右隣の列に文字や数式など入っていれば
当然はみ出した部分は表示されませんが、
右となりに何も入力されていない場合、
はみ出した部分が、表示される場合とされない場合があり、
どういう規則になっているのかわからないのですが、、、

エクセル2003を使用しています。
どういう規則なのでしょうか
教えてください。

Aベストアンサー

隣のセルが結合されている、ということはありませんか?
あるいは、自セルが折り返して表示になっているとか。

Qある範囲のセルから任意の値を検索して、その隣のセルの値を取得するという関数はありますか?

Excelの関数について質問します。
ある範囲のせるを検索して、その隣のセルの値を取得するという関数を探しています。
なければユーザー定義で作りたいと思っています。
VLOOKUP関数では一番左端が検索されますが、
それをある範囲まで拡張して、
その右隣の値を取得できるようにしたいのです。
どうかお知恵をお貸しください。

Aベストアンサー

●X1セルの値を範囲A1:F200の中から探して、その右隣のセルの値を返す

 =OFFSET(A1,SUMPRODUCT(ROW(A1:F200)*(A1:F200=X1))-1,SUMPRODUCT(COLUMN(A1:F200)*(A1:F200=X1)))

※最初のA1はワークシートの左上隅を示すものなので、検索範囲に関わらずA1固定
※SUMPRODUCT(ROW(A1:F200)*(A1:F200=X1)) ⇒ A1:F200で値がX1と一致するセルの行番号

>その「ある範囲」の中には検索したい値が入っているセルは1つしかありません。
というのが前提です。複数のセルがHITすると関係ないセルの値が返るので、
場合によっては、IFをかぶせてCOUNTIFで確認した方が良いかもしれません。
 ex. =IF(COUNTIF(A1:F200,X1)=1,【上記数式】,"えらー")

ちなみに、VBAでやるならこんな感じになるかと。

動作の概要
 【検査範囲】から【検査値】を探し、
 最初にHITしたセルについて、右隣のセルの値を返す。
 ex. =Sample(X1,A1:F200)

'--------------------------↓ココカラ↓--------------------------
Function Sample(ByVal 検査値 As Variant,ByVal 検査範囲 As Range)
 For Each セル In 検査範囲
  If セル = 検査値 Then Exit For
 Next セル
 Sample = セル.Offset(0, 1)
End Function
'--------------------------↑ココマデ↑--------------------------

いずれもExcel2003で動作確認済。
以上ご参考まで。

●X1セルの値を範囲A1:F200の中から探して、その右隣のセルの値を返す

 =OFFSET(A1,SUMPRODUCT(ROW(A1:F200)*(A1:F200=X1))-1,SUMPRODUCT(COLUMN(A1:F200)*(A1:F200=X1)))

※最初のA1はワークシートの左上隅を示すものなので、検索範囲に関わらずA1固定
※SUMPRODUCT(ROW(A1:F200)*(A1:F200=X1)) ⇒ A1:F200で値がX1と一致するセルの行番号

>その「ある範囲」の中には検索したい値が入っているセルは1つしかありません。
というのが前提です。複数のセルがHITすると関係ないセルの値が返るので、
場...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング