- ベストアンサー
セルに入力したデータと同じデータを抜き出す
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
式を分かり易く計算にも負担のかからない方法は作業列を使うことです。 例えばGK列を作業列としてGK1セルには次の式を入力して下方にドラッグコピーします。 =IF(FX1="","",FX1&COUNTIF(FX$1:FX1,FX1)) その後にB23セルには次の式を入力してG23セルまで横にドラッグコピーしたのちに下方にもドラッグコピーします。 =IF(COUNTIF($GK:$GK,$B$2&ROW(A1))=0,"",INDEX($FU:$GH,MATCH($B$2&ROW(A1),$GK:$GK,0),IF(COLUMN(A1)=1,1,IF(COLUMN(A1)=2,3,IF(COLUMN(A1)<=4,COLUMN(F1),IF(COLUMN(A1)=5,12,14)))))) なお、F23セルから下方に行には日付のシリアル値が表示されますので範囲を選択して日付の表示に変更します。
その他の回答 (5)
- keithin
- ベストアンサー率66% (5278/7941)
- keithin
- ベストアンサー率66% (5278/7941)
>FT列は空白のまま。 お話になりませんね。 ご相談の大前提で、B2若しくはFX列に正しいデータが記入されていません。 何で出来ないんでしょうね。
お礼
なるほど、A23セル~A32セルにナンバリングはそのまま使うのですね。 それでもダメですね、エラーが出たりします。
補足
えっ? どういうことでしょうか? A2セルは簡単な 機器名 FX列は 機器名の数種類が入力されていますが・・・。
- keithin
- ベストアンサー率66% (5278/7941)
あぁ、なんだ。 22行目に何やらごちゃっと記入してあったのは何の説明も無くイミフメイだったのでスルーしてたんですが。 FT1に =IF(AND(FX1=$B$2,COUNTIF(FX$1:FX1,FX1)<=10),COUNTIF(FX$1:FX1,FX1),"") 以下コピー ここを変えたらまた全部やり直しなので、今回はこの通りにしてください。そろそろ。 A23以下に1から10まで番号を記入しておく B23: =IF(A23>MAX(FT:FT),"",VLOOKUP($A23,FT:HH,2)) C23: =IF(A23>MAX(FT:FT),"",VLOOKUP($A23,FT:HH,4)) D23: =IF(A23>MAX(FT:FT),"",VLOOKUP($A23,FT:HH,9)) E23: 読めないのでスルー F23: =IF(A23>MAX(FT:FT),"",VLOOKUP($A23,FT:HH,13)) G23: =IF(A23>MAX(FT:FT),"",VLOOKUP($A23,FT:HH,15)) それぞれ以下コピー とりあえずこれを機にVLOOKUP関数は勉強して、ご自分で数式が書けるようになってください。
補足
んー だめですねー FT1からの入力 オートフィルで入力しました。 FT列は空白のまま。 B23に =IF(A23>MAX(FT:FT),"",VLOOKUP($A23,FT:HH,2)) を入力しましたが、一瞬0が見えて何も表示されません。
- keithin
- ベストアンサー率66% (5278/7941)
FV1: =IF(AND(FX1=$B$2,COUNTIF(FX$1:FX1,FX1)<=10),COUNTIF(FX$1:FX1,FX1),"") 以下コピー 答えは簡単なVLOOKUP関数を使うだけです。 A23以下に1から10まで番号を記入しておく B23: =IF($A23>MAX($FW:$FW),"",VLOOKUP($A23,$FV:$GD,COLUMN(D23))) 「これを右にコピー、下にコピーします」を書いておくのを忘れたので判らなかったようですね。大変失礼しました。
補足
ありがとうございます。 やってみたのですが、FVセルの機器Aにナンバリングは出来ました。 しかしB23セルには相変わらず0 C23には0 D23には55 E23には54 F23には 78 G23には0.34と表示されてしまいます。
- keithin
- ベストアンサー率66% (5278/7941)
無駄に複雑な数式を駆使すればもちろん「やればできます」が、添付図のようにちょっと工夫するだけで、普段使いの数式だけでやっつけるのがお勧めです。 FW1: =IF(AND(FX1=$B$2,COUNTIF(FX$1:FX1,FX1)<=10),COUNTIF(FX$1:FX1,FX1),"") 以下コピー 答えは簡単なVLOOKUP関数を使うだけです。 A23以下に1から10まで番号を記入しておく B23: =IF($A23>MAX($FW:$FW),"",VLOOKUP($A23,$FW:$GD,COLUMN(C23))) まぁ一応ご参考に作業列を使わない方法: H2: =IF(ROW(B1)>COUNTIF($FX:$FX,$B$2),"",INDEX(FY:FY,SMALL(IF($FX$1:$FX$99=$B$2,ROW($FX$1:$FX$99)),ROW(B1)))) と記入し、必ずコントロールキーとシフトキーを押しながらEnterで入力 右にコピー、下にコピー。 説明は省略しますので、ブラックボックスで使ってください。
補足
すいません、FW1にはデータがあり、FVセルに数式を入れて機器Aにナンバリングしました。 A23以下に1から10まで番号を記入して、B23セルに =IF($A23>MAX($FV:$FV),"",VLOOKUP($A23,$FV:$GD,COLUMN(C23))) と入力しましたがB23セルに 機器Aと表示されます。 作業列を使わない下のやり方でやってみましたが、B23が0となり求める答えにならないのですが、これはどこがいけなかったのでしょうか?
お礼
KURIMOTOさん 完璧でした。 ばっちり目的にたどり着くことが出来ました、エクセル初心者で、しかも続けて使うことが殆ど無いため教えて頂けるのは大変助かります。 B2は手入力で、B23~B32に表示、次にH2に手入力で H23~H32に表示と言う作業が90個くらいあるんですが、どうしよう(笑 とはいえ大変助かりました。 自力でやるのは難しそうなんでちょっと方法を考えて見ます。 ありがとうございました。