- ベストアンサー
エクセルでの便利な作業方法について質問です
- エクセルで特定の条件に基づいてデータを参照する際に、vlookup関数を使用しているがうまくいかない
- 名前を入力すると、該当する作業項目の数値が表示されるようにしたいが、うまく表示されない
- 使用しているエクセルのバージョンは2007で、OSはXP
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは! 一例です。 ↓の画像で説明します。 Sheet1の1000行目まで対応できる数式にしています。 Sheet2のA1セルに検索してい氏名を入力するとそのデータが表示されるようにしてみました。 Sheet2のB2セルに =IF(OR($A$1="",COUNTIF(Sheet1!$A$2:$A$1000,$A$1)<ROW(A1)),"",INDEX(Sheet1!B$2:B$1000,SMALL(IF(Sheet1!$A$2:$A$1000=$A$1,ROW($A$1:$A$999)),ROW(A1)))) これは配列数式になってしまいますので、この画面からコピー&ペーストしただけではエラーになると思います。 B2セルに貼り付け後、F2キーを押す、またはB2セルをダブルクリック、または数式バー内で一度クリックします。 編集可能になりますので、Shift+Ctrlキーを押しながらEnterキーで確定します。 数式の前後に{ }マークが入り配列数式になります。 これを隣のC2セルまでオートフィルでコピーした後に、B2・C2セルを範囲指定し、C2セルのフィルハンドルで下へコピーすると 画像のような感じになります。 以上、長々と失礼しました。 参考になればよいのですが・・・m(__)m
その他の回答 (3)
- MackyNo1
- ベストアンサー率53% (1521/2850)
同じような回答がダブってしまいましたので、参考までに。 Ctrl+Shift+Enterで確定しないでもそのまま計算できる数式にしたいなら以下のような数式にします(この数式の方が計算負荷がいくぶん軽いかもしれません)。 =INDEX(Sheet1!C:C,SMALL(INDEX((Sheet1!$A$2:$A$100<>$A$2)*1000+ROW($A$2:$A$100),),ROW(B1)))&"" ただし数値データは文字列の数字として表示されますので、必要に応じて数式を修正してください。 >上記のように名前を入力したらC行部分にB行で指定された各作業項目の数値が出るようにvlookup等を使ってみていますが、どうしても上手くいきません。 もしかして、B行の部分はA列のデータから自動的に取得するのではなく、特定の値のみを指定するのでしょうか? その場合は、C2セルに以下のような関数を入力します(バージョンにかかわらず使用可)。 =IF(B2="","",SUMPRODUCT((Sheet1!$A$2:$A$100=$A$2)*(Sheet1!$B$2:$B$100=B2)*Sheet1!$C$2:$C$100)) ご使用のエクセルのバージョンが2007なら計算負荷の少ないSUMIFS関数を利用されることをお勧めします(使い方はヘルプを参照してください)。
お礼
教えて頂きありがとうございます。 非常に参考になりました。
- MackyNo1
- ベストアンサー率53% (1521/2850)
元データがSheet1のA2セル以下にあり、Sheet2のA2セルに検索値を入力した場合、以下の数式で対応するB列とC列のデータを表示させることができます。 =IF(COUNTIF(Sheet1!$A$2:$A$100,$A$2)<ROW(A1),"",INDEX(Sheet1!B:B,SMALL(IF(Sheet1!$A$2:$A$100=$A$2,ROW($A$2:$A$100),""),ROW(A1)))) 配列数式ですので、数式入力後、Ctrl+Shift+Enterで確定して右方向に1つ下方向に適当数オートフィルしてください。
お礼
教えて頂きありがとうございます。 非常に参考になりました。
- KURUMITO
- ベストアンサー率42% (1835/4283)
VLOOKUP関数で処理をするのは難しいでしょう。 シート1に元のデータがあるとしてD列は作業列としてD1セルには次の式を入力して下方いオートフィルドラッグします。 =IF(A1="","",A1&"/"&COUNTIF(A$1:A1,A1)) お求めの表はシート2に作るとしてA列例えばA1セルにはあああなど名前を入力します。 B1セルには次の式を入力したのちにC1セルまでオートフィルドラッグしたのちに下方にもオートフィルドラッグします。 =IF(COUNTIF(Sheet1!$D:$D,LOOKUP("ーー",$A$1:$A1)&"/"&ROW(A1))=0,"",INDEX(Sheet1!$A:$C,MATCH(LOOKUP("ーー",$A$1:$A1)&"/"&ROW(A1),Sheet1!$D:$D,0),COLUMN(B1))) この式でLOOKUP("ーー",$A$1:$A1)はA列で今選択されているセルの行よりも上の行で最後に文字列のある行番号を求めるものです。ーーは必ずひらがな入力モードで行います。半角英数モードではありません。
お礼
教えて頂きありがとうございます。 非常に参考になりました。
お礼
画像付きで非常に分かりやすかったです。 お陰でエクセルも無事に完成できました。 本当にありがとうございます。