- 締切済み
エクセル 入力に関する関数の使い方
E8の文字が 縦6列 横10行の表の中で ある文字に該当したら 右端の文字を E10に 入力する方法を教えてください。 下の例ですと 「あ」に該当したら 「-」を入力する あ い う え お A - か き く け こ B + ~ ~ は ひ ふ へ ほ J +
- みんなの回答 (7)
- 専門家の回答
みんなの回答
- kagakusuki
- ベストアンサー率51% (2610/5101)
今仮に、 甲寅甲辰甲午甲申甲戌甲子+ 乙卯乙巳乙未乙酉乙亥乙丑- 丙辰丙午丙申丙戌丙子丙寅+ 丁巳丁未丁酉丁亥丁丑丁卯- 戊午戊申戊戌戊子戊寅戊辰+ 己未己酉己亥己丑己卯己巳- 庚申庚戌庚子庚寅庚辰庚午+ 辛酉辛亥辛丑辛卯辛巳辛未- 壬戌壬子壬寅壬辰壬午壬申+ 癸亥癸丑癸卯癸巳癸未癸酉- のような表がセル範囲がG2:M11のセル範囲に設けられているものとした場合、E8の文字が「癸亥」ならE10に「-」を表示させる関数の一例は次の様なものとなります。 =IF(E8="","",IFERROR(INDEX($M:$M,9999999-SUMPRODUCT(MAX(($G$2:$L$11=E8)*(9999999-ROW($G$2:$L$11))))),"(該当無し)")) 尚、もしE8セルと同じ値が入力されているセルが必ず1つだけしか存在しない事が保障されている場合には、次の様な関数でもOKです。 =IF($E$8="","",IFERROR(INDEX($M:$M,SUMPRODUCT(($G$2:$L$11=$E$8)*ROW($G$2:$L$11))),"(該当無し)"))
- imogasi
- ベストアンサー率27% (4737/17070)
エクセルの質問に使う、使用用語が無茶で、質問者はエクセル経験は少ないと思うが、なぜこういう(関数でやろうとすると、むつかしい)質問が出てくるのか不思議だ。 ーー 関数での回答はすでに出ている。 だから下記のような回答をしても無駄かもしれないが、将来にでも、質問者でなく、WEB照会で他の人が見てくれるかもしれないと思って書いてみる。 ーー ユーザー定義の関数を作る。 標準モジュールに Function sagasu(x) Z = x.Value Set y = Worksheets("Sheet2").Range("$a$1:$F$10").Find(Z) v = y.Row w = Cells(v, 200).End(xlToLeft).Column sagasu = Cells(v, w) End Function 検索語句でセル範囲を探し行を求める。 その行のデータのある最右端の列を求め、その行、列のセルのデータを持ってきている。 そういう関数を作ったもの。Findというメソッドを使っているだけ。 VBAと関数の差が出ていると思う。 ーー 例データ Sheet2で A1:D10に 甲寅 甲辰 甲午 甲申 甲戌 甲子 + 乙卯 乙巳 乙未 乙酉 乙亥 乙丑 - 丙辰 丙午 丙申 丙戌 丙子 丙寅 + 丁巳 丁未 丁酉 丁亥 丁丑 丁卯 - 戊午 戊申 戊戌 戊子 戊寅 戊辰 + 己未 己酉 己亥 己丑 己卯 己巳 - 庚申 庚戌 庚子 庚寅 庚辰 庚午 + 辛酉 辛亥 辛丑 辛卯 辛巳 辛未 - 壬戌 壬子 壬寅 壬辰 壬午 壬申 + 癸亥 癸丑 癸卯 癸巳 癸未 癸酉 - (A1:A10にコピペして データー区切り位置で2文字づつ指定して、各セルに散らばらす、と作れる。) ーー 例として Sheet2で C14に「 戊子 」 と入れる。 D15に =sagasu(C14) と関数を入れる。 結果は D15は 「 + 」
- bunjii
- ベストアンサー率43% (3589/8249)
> ROW(A1:A10),0,0))),"")は 必要なのですか? 貼り付け画像にはありませんが。 勘違いしていませんか? =IF(COUNTIF(G1:L10,E8),INDEX(M1:M10,MAX(INDEX((G1:L10=E8)*ROW(A1:A10),0,0))),"") の一部である ROW(A1:A10),0,0))),"") を省いたら数式自体が誤りになります。 MAX関数の引数にINDEX関数を使っている理由は数式の確定時にEnterキーのみで配列値をMAX関数へ渡すためです。 下記の3つの数式は等価ですが1番目のときは数式を確定するときCtrl+Shift+Enterの打鍵が必要です。 =MAX((G1:L10=E8)*ROW(A1:A10)) =MAX(INDEX((G1:L10=E8)*ROW(A1:A10),0,0)) =SUMPRODUCT((G1:L10=E8)*ROW(A1:A10)) 何れもM1:M10から目的の文字を抽出するための行番号を算出しています。 回答No.1のようにOFFSET関数で目的の値を引き出す方法もあります。
- bunjii
- ベストアンサー率43% (3589/8249)
- bunjii
- ベストアンサー率43% (3589/8249)
- msMike
- ベストアンサー率20% (368/1813)
》 縦6列 横10行の表 Excel的には、それ奇妙に受け取られます。 縦6行、横10列が普通です。
- mt2015
- ベストアンサー率49% (258/524)
添付の図のような事でしょうか? E10には以下の式を入れています。 =OFFSET(A1,SUMPRODUCT(ROW(A1:J6)*(A1:J6=E8))-1,9)
補足
甲寅 甲辰 甲午 甲申 甲戌 甲子 + 乙卯 乙巳 乙未 乙酉 乙亥 乙丑 - 丙辰 丙午 丙申 丙戌 丙子 丙寅 + 丁巳 丁未 丁酉 丁亥 丁丑 丁卯 - 戊午 戊申 戊戌 戊子 戊寅 戊辰 + 己未 己酉 己亥 己丑 己卯 己巳 - 庚申 庚戌 庚子 庚寅 庚辰 庚午 + 辛酉 辛亥 辛丑 辛卯 辛巳 辛未 - 壬戌 壬子 壬寅 壬辰 壬午 壬申 + 癸亥 癸丑 癸卯 癸巳 癸未 癸酉 - のような表です。 E8の文字が「癸亥」なら E10に「-」を入力する方法です。 ( 縦6行 横10列の表の中で ある文字に該当したら 右端の文字を E10に 入力する方法を教えてください。)
補足
ROW(A1:A10),0,0))),"")は 必要なのですか? 貼り付け画像にはありませんが。