- 締切済み
表から条件の合う値を取り出す方法
- みんなの回答 (8)
- 専門家の回答
みんなの回答
- masnoske
- ベストアンサー率35% (67/190)
ワークシート関数では実現できないと思うので、ユーザー関数 InterCell を作ってみました。 まず、以下のコードを ThisWorkbookにコピーしてください。 Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) Sh.Calculate End Sub 次に、以下のコードを標準モジュールにコピーしてください。 Public Function InterCell() As Variant Dim rng1 As Range Dim rng2 As Range Set rng1 = Range("C1:D1") Set rng2 = Range("B2:B11") With Selection If .Count = 2 Then If (Not Intersect(.Areas(1), rng1) Is Nothing) And (Not Intersect(.Areas(2), rng2) Is Nothing) Then InterCell = Cells(.Areas(2).Row, .Areas(1).Column).Value ElseIf (Not Intersect(.Areas(1), rng2) Is Nothing) And (Not Intersect(.Areas(2), rng1) Is Nothing) Then InterCell = Cells(.Areas(1).Row, .Areas(2).Column).Value Else InterCell = CVErr(xlErrRef) End If End If End With Set rng1 = Nothing Set rng2 = Nothing End Function 最後に、結果を返したいセルに以下のように入力して下さい。 =InterCell() 1つ目のセルを選択し、ctrlキーを押しながら2つ目のセルを選択して下さい。 InterCell を入力したセルに結果が返ります。 選択した2つのセルが有効範囲("C1:D1","B2:B11")にない場合は#REF! エラーが起きるようにしてあります。
- masnoske
- ベストアンサー率35% (67/190)
[No.6] について なるほど、そういう方法もあるのですね。 1つ勉強になりました(使いどころが思い付きませんが)。 で、質問の場合は、2つのセルを指定しなければならないので、この方法ではダメですよね。。。たしかに微妙です。
- kkkkkm
- ベストアンサー率66% (1719/2589)
> おそらく、選択したセルを取得する関数は存在しません。 > ご存じの方がおられれば、フォローをお願いします。 微妙なところですが 選択したセルをダブルクリック(もしくはF2)してエンターでそのセルのアドレスが取得できます。 =ADDRESS(CELL("row"),CELL("col"))
- masnoske
- ベストアンサー率35% (67/190)
何がしたいのか理解できないのですが。。。 おそらく、選択したセルを取得する関数は存在しません。 ご存じの方がおられれば、フォローをお願いします。 で、もしも、C列と3行の交点セル(C3)の値を得たいのであれば、結果を返すセルに =C3 と入力すれば良いだけですが、まさかね(笑)
- imogasi
- ベストアンサー率27% (4737/17069)
初診者らしく、説明が普通と違うようで、よく意味が分からない。 (1)関数を使って達成する方法が、初心者にとってやさしいとは言えない。 VBAのSQLなどを使い、AND条件の仕組で検索するということがよく行われる。 (2)初心者はまず、エクセルの操作で実現する方法を考えるべきと思う。 (本件では、抜出し問題、抽出問題というパターンらしいが)エクセル は、まずそういうソフトだと思う。 「フィルタ」とかがまず考えるべきことと思う。 ーー 取り出す、抽出するための条件は、普通は「セルの値(数値、文字列)」で、シート上のセルに置いて、指定する場合が多い。そのセルが入っているセルを設けるということ。 データの中のデータから割り出して抜き出すのは、例えば最大値の、成績者氏名を取り出すなどのパターンはあり得るが。 まあ、3年B組の田中の今回の成績を抜き出すなどのパターから考える場合が多いと思う。 この質問のように、「選択する」という質問にはしない。 選択する、というのは、操作の説明に出てくるもの。 すなわち、データのある範囲外の、例えば、E1セルとF1セルに 「XX]と{YY]という値を入れて(指定して)それを使って関数式を組み立てるのです。 ーー 関数では、該当が2つ以上ある場合、すべて列挙するなどは、作業列を使わないと、式が複雑で、とても初心者が思いつける式ではないことを知っておくとよい。
- kkkkkm
- ベストアンサー率66% (1719/2589)
関数で選択したセルの場所2か所は得られないので (1)画像のC列のC1行の「1A」を選択する。 代替え案 E1に1Aを入力 (2)B列のB3行の「B」を選択する。 代替え案 F1にBを入力する 結果を表示したいセルに =INDEX(C2:D11,MATCH(F1,B2:B11,0),MATCH(E1,C1:D1,0))
- msMike
- ベストアンサー率20% (364/1804)
=HLOOKUP("1A",B1:D11,3,FALSE)
- sknbsknb2
- ベストアンサー率38% (1158/3030)