• ベストアンサー

エクセル関数

こんにちは、エクセルでこんなこと出来ますか?教えてください。  例 acbadcbba 935841621 セルにa~dの文字を入力し、それに対する値を入力していきます。  順次入力していきますが、常にa~dの値を別なセルに表示させたいのですが、可能でしょうか?  上記の例では、aは1 bは2 cは1 dは4 です。 可能でしたら、方法を教えてください。よろしくお願いします。

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

  • ベストアンサー
  • inte-nori
  • ベストアンサー率48% (33/68)
回答No.10

#2です。例によって関数ではなくVBAですが、縦に入力する場合の方法を書いておきます。 #2のコードのOffset(-1)のところを、Offset(,-1)に変更するだけです。 一応、今回のコードの説明を書いておきますね。ご参考までに。 Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) →開いているブックの中にあるシートが変更されたとき、下記のコードを実行する  (同時に、変更されたセルをTargetという引数に格納する)   On Error GoTo er   →エラーが発生したときはer:にジャンプして、何もせずに終了させる   If Target.Offset(,-1).Value = "a" Then Range("f10") = Target.Value   →もしTargetの左のセルが"a"だったら、F10セルにTargetの値を入れる(以下4行同じ) er: →エラー発生時のジャンプ先(左端のセルを変更した時、上の行がエラーとなってしまうため) End Sub →コード終了の宣言

hiromi-chann
質問者

お礼

 詳しい説明ありがとう御座います。  やっと内容を理解する事が出来ました。  関数での方法が分からないのは残念でしたが、私の作りたいシートは出来上がりそうです。  本当にありがとう御座いました。

その他の回答 (9)

  • sakenomo
  • ベストアンサー率52% (35/67)
回答No.9

#8です。 すみません。下の式は、B列の行数がA列の行数より少ないと、正確な答えを返しませんでした。なかなか難しいですね。

hiromi-chann
質問者

お礼

 いろいろ考えてくれてありがとう御座います。  本当に難しいですよね!ちょっとしたものを作ろうと考えて始めたものなのに、なかなか進まなくって.....

  • sakenomo
  • ベストアンサー率52% (35/67)
回答No.8

#7です。 A列にアルファベット、B列に数字。 D1にa、D2にb、D3にc、D4にdとして、 E1に以下を入れ、数式バーにカーソルがあるうちに、ShiftキーとCtrlキーを同時に押しながらEnterキーを押下、下へオートフィルでいかがでしょう。 =IF(ISERROR(MATCH($D1,A:A,0)),"",INDEX($B:$B,MAX(IF($A$1:$A$10000=$D1,ROW($A$1:$A$10000),""),1)))

  • sakenomo
  • ベストアンサー率52% (35/67)
回答No.7

#5です。 前回の式では入力する値の桁数が少ないと、不正確な結果を出してしまいました。修正案です、より複雑になってしまいました。もっと簡潔に出来そうな気もするのですが・・・。 数式バーにカーソルがあるうちに、ShiftキーとCtrlキーを同時に押しながらEnterキーを押してください。 =IF(ISERR(FIND(A4,RIGHT($A$1,LEN($A$2)),1)),"",LEFT(RIGHT($A$2,SMALL(IF(LEFT(RIGHT($A$1,ROW($A:$A)),1)=A4,ROW($A:$A)),1)),1))

  • inte-nori
  • ベストアンサー率48% (33/68)
回答No.6

#2で答えた者ですが、 また、#2では「1行目にa~d、2行目に値」と書きましたが、数値を入力した時に すぐ上のセルの文字を判定するようになっているので、「a~d」と「値」の間に 空欄がなければ、1、2行目以外でも大丈夫です。

hiromi-chann
質問者

お礼

 実際は縦に使用するつもりなので、皆さんの回答を理解出来るように頭フル回転中です(あまり回りません)。  ところで、関数では無理なのでしょうか?  

  • sakenomo
  • ベストアンサー率52% (35/67)
回答No.5

関数でやってみました。   A 1 acbadcbba 2 935841621   3 4 a 5 b 6 c 7 d として、任意のセルに下をコピーし、まだ数式バーにカーソルがあるうちにShiftキーとCtrlキーを同時に押しながらEnterキーを押します。数式の両脇に{}が付きます。その後オートフィルで下へコピー。 =LEFT(RIGHT($A$2,SMALL(IF(LEFT(RIGHT($A$1,ROW($A$1:$A$20)),1)=A4,ROW($A$1:$A$20)),1)),1)

  • comv
  • ベストアンサー率52% (322/612)
回答No.4

#1 comv です 大きな勘違いをしていたようですねスミマセン 以下のようなことでしょうか?    A   B C D E 1 acbadcbba 2 935841621 3 4       a  b  c  d 5 1      式 → → → 6 2     ↓ 7 3 8 4 9 5 10 6 11 7 12 8 13 9 A1に記号入力 a~d A2に対する値を入力 A5:A13に1~9を記載 B4:E4に a~dを記載 B5に式  =TEXT(MAX(IF(LEN($A$1)>=ROW($A$1:$A$30),IF((MID($A$1,ROW($A$1:$A$30),1)=B$4)*(MID($A$2,ROW($A$1:$A$50),1)*1=$A5),$A5))),"#") と入力後 [Ctrl]+[Shift]を押したまま[Enter]で確定 B5:E13の範囲に複写

hiromi-chann
質問者

お礼

 何度もありがとう御座います。

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

A-iと言う範囲(9番目)までなら、小文字英字として Private Sub Worksheet_Change(ByVal Target As Range) s = "" For i = 1 To Len(Target) s = s & Trim(Str(Asc(Mid(Target, i, 1)) - 96)) Next i MsgBox s End Sub で良いでしょう。 sを好きなセルにセットすること。 何に使うか想像できないが。

  • inte-nori
  • ベストアンサー率48% (33/68)
回答No.2

VBAで作ってみたんですが、これでいいでしょうか? 1行目のセルにa~dを、その下の2行目にそれに対応する値を入力するとします。 1.「ツール」>「マクロ」>「Visual Basic Editor」を開きます。 2.左上のほうの「ThisWorkbook」というところで右クリックをして、「コードの表示」を選択します。 3.右側の大きな画面に下記のコードを入力します。(コピー&ペーストでいいはず。) Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)   On Error GoTo er   If Target.Offset(-1).Value = "a" Then Range("f10") = Target.Value   If Target.Offset(-1).Value = "b" Then Range("g10") = Target.Value   If Target.Offset(-1).Value = "c" Then Range("h10") = Target.Value   If Target.Offset(-1).Value = "d" Then Range("i10") = Target.Value er: End Sub 4.下のタスクバーのボタンでエクセルの画面を表示してください。 これで、F10~I10のセルにそれぞれa~dの下に入力した値が表示されると思います。 上記のコードのRange("○○")の部分を修正することにより、別のセルに表示させることが可能です。

hiromi-chann
質問者

お礼

 VBAの存在も知らなかったのですが、一応希望道りになりました。ただ、どう使えばよいのか良く分かりませんので、もっと勉強してみます。  ありがとう御座います。

  • comv
  • ベストアンサー率52% (322/612)
回答No.1

こんばんは >上記の例では、aは1 bは2 cは1 dは4 です。 で acbadcbba が 935841621 になる規則性が わからないのですが 単純に a=1 b=2 C=1 d=4 なら A1にa~dを入力 =SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1,"a",1),"b",2),"c",1),"d",4) 結果は  acbadcbba なら 112141221 となります

関連するQ&A

  • エクセルの関数

    セルAとセルBに小数点の値があります。 セルAとセルBどちらか、 (1)0.2以下の値がある場合には、セルAかセルBの値の大きい方を別の列のセルCに入力。 (2)両方とも0.2以上の時には、上記とはまた別の列のセルDに【セルA×セルB】の値を入力。(小数点2桁まで表示、以下四捨五入) (1)と(2)で表示されたものを、またまた別の列のセルEにまとめて、 (1)は 値×5(小数点切り上げ) (2)は 値×25(小数点切り上げ) というものを作りたいのです。 IFとANDとROUNDUPなど使ってやってみましたが、わけがわからなくなってしまったので、 どなたか教えていただけたらありがたいです。

  • EXCELのVLOOKUP関数の特殊な使い方を教えてください。

    初めて投稿しますので、宜しくお願いします。 最近会社でエクセルの表を作って欲しいと言われたんですが、元々エクセルとかはあまり得意ではないので苦戦しており、いろいろ調べても解決できなかったのでこちらでご相談させていただきます。 質問内容 EXCELにて型式一覧の表から当てはまる値を自動的に抜き出したい。 セルは以下の通りです。  |  A   |  B  | C | D |  |------|-----|-------| 1 | 型式番号 | 型式  |   値   |  |------|-----|-------| 2 |      |     | max | 10 |  |      |     |-------| 3 |  01   |  a  | min | 20 |  |      |     |-------| 4 |      |     | ave | 30 |  |------|-----|-------| 5 |      |     | max | 40 |  |      |     |-------| 6 |  02   |  b  | min | 50 |  |      |     |-------| 7 |      |     | ave | 60 |  |------|-----|-------| 8 |      |     | max | 70 |  |      |     |--------------| 9 |  03   |  c  | min | 80 |  |      |     |-------| 10|      |     | ave | 90 |  |------|-----|-------| 検索用  |  A   |  B  | C | D |  |------|-----|-------| 15| 型式番号 | 型式  |   値   |  |------|-----|-------| 16|      |     | max▼| 10 |  |------|-----|-------|  上記の検索用のセルに入力したときに自動的に表示できるようにしたいのが今回の質問です。 手順と条件 1.A16の所は型式番号入力する(キーボードやテンキーなどで直接入力) 2.A16のセルに001と入力するとB16に自動的に【a】と表示される(VLOOKUPで処理しています。) 3.次にC16のセルでは入力規則リスト型にして、中の値は【max,min,ave】の3つだけを表示。 4.C16のリストから【max】を選ぶと型式番号001の型式aの値maxに対応している【10】という値が自動的D16に表示される。 5.A2~A4はセル結合。同じようにB2~B4までセル結合しております。 上記のような事は出来るのでしょうか? 説明下手で申し訳ございませんが、何卒宜しくお願い致します。

  • エクセル関数について、教えて下さい。

    エクセル関数について、教えて下さい。 a1:300 、 b1:* 、 c1:10 と入力してあります。 ここで、 d1へ =concatenate("=",a1,b1,c1) を設定した時に得られて表示される文字は、 「 =300*10 」 となります。 この時、この文字を数式として活用したいのですが、つまり解が " 3000 " と別のセルでも良いので、解答するようにしたいのですが、お解かりになる方教えてください。

  • エクセルの関数について

    エクセルについて質問です。 「ある数値を入力したら常に一定の文字列を表示する」にはどの関数がいちばん便利でしょうか? 例:セルA1に101を入力→B1に「りんご」を表示 セルA2に201を入力→B2に「みかん」を表示 のように全部で50程度の数値&文字列の組み合わせ(コード表)を 判別したいと思っています。 よろしくお願いします。

  • エクセル 理論関数について。

    エクセル理論関数の質問です  a1セルの値-10・10・10・-10  b1セルの値50・-50・50・-50 上記のような数が変動します、a1・b1セルを参照させて数幅を計算させたいのですが?。 例1 a1セルに-10とb1セルに50の幅は=abs(a1)+abs(b1)=60 例2 a1セル10・b1セル50の場合の幅は40 例3 a1セル-10・b1セル-50の場合は-40 c1セルに上記のような数値になる理論式を入力したいのでっすが、上手にできません、教えて頂けないでしょうか?

  • Excelの関数について

    [C1のセル値]-[A1またはB1のセル値] を使って計算したい場合の計算式を教えて下さい。 A列、B列、C列には具体的な数値を入力します。 D列にその結果を表示させる関数を入力したい。 と考えています。 但し、以下の条件を満たす事が必須となります。 (1)A、B、またはCのセルが未入力の場合はDは空白セルのまま。 (2)A、Bいずれかの一方が入力されている場合はCの値を使って計算し結果を表示。 (3)A、Bいずれも入力されている場合はBを優先してCの値を使って計算し結果を表示。 よろしくお願いします。

  • エクセル関数について

    エクセルでセルA1に1、B1に2・・・・・Iに、J1に10が入力された表があります。また、A2に1、B2に3、C2に5、D2に7が入力されています。A2からD2を検索してA3に1、C3に1、E3に1、G3に1を入力します。次に、A2からにD2に2,4,6,8、と入力して同様にB3、D3、F3、H3に1が入るようにしたいのです。 このとき、1,3,5,7の値と2,4,6,8、の値が消去されず。またA2からD2に再度異なる数を入力した場合3列の値に1が加算されるようにしたいのですが、教えてください。

  • エクセル関数を教えて下さい。

    エクセルの数式を教えて下さい。三角関数を全く忘れていますのでよろしくお願 いします。 図形とエクセルの表を画像でアップしました。  Aは角度  B/C/Dは長さ   一行目   セルA1に 任意の角度を入力 B1に 任意の長さを入力するとC1には C の長さの値が出るエクセル関数 D1には Dの長さの値が出るエクセル関数  2行目も同じ様に  A2に 角度  C2に長さを 任意に入力すると  B2とD2に 長さが出てくる エクセル関数   3行目も同じ様に  A3に角度 D3に長さを 任意入力すると  B3とC3に 長さが出てくるエクセル関数  4行目  B4とC4に 長さを任意入力すると  A4に角度 D4に長さが出てくる エクセル関数 

  • エクセル関数 マクロ

    EXCELで作ってある表に数字を入力する時、 (例)セルA1⇒B1⇒C1(⇒D1⇒F1)と入力した後エンターキーを押したら、 セルA2⇒B2⇒C2(⇒D2⇒F2)へ、またエンターキーを押したら、 セルA3⇒B3⇒C3(⇒D1⇒F3)と移動する方法(関数?マクロ?!)を教えて下さい。

  • エクセルの関数について

    以下のようなことを実現できるエクセルの関数を教えてください。 <状況> ・ひとつのセルに、複数の数字が「,」区切りで入力されている。  (仮にA1セルとします) ・B1セルに検索値が入っています。 <実現したいこと> B1の値が、A1に含まれるとき、C1に”○”を返す。 このときのC1に入力すべき関数を教えてください。 <具体例> A1:12,13,14 B1:12 C1:○

専門家に質問してみよう