• ベストアンサー

エクセルの抽出について

エクセル初心者です。ネットや参考書をみて何となくやっているのですが、以下の事がどうしてもわかりません。(抽出の質問をいろいろみたんですがよくわからなかったので質問が重複していたらごめんなさい) 加工       Pr単価 チェーンカット   20 組み立て      30 メッキ       25 ハンダ       10 のり付け     15 エポ入れ      30 という表(これで伝わりますでしょうか?)で、「加工」の項目の、「メッキ」と「ハンダ」と「エポ入れ」を抜いたデータを別のシートのセルに表示させたいのですが、出来るのでしょうか?(その時に、「単価」も一緒に表示させたいのですが) 後、タイトルとは違うのですが、もう1つお聞きしたい事があるんですけど、ある表に品番を入力して最後にきた品番を別のセルに表示させるようにしたいので以下の関数?を使ったのですが、機能はするのですが、表に何も文字が入力されていないと、「#VALUE!」という文字がセルに表示されてしまいます。機能するのでかまわないのですが何か気持ち悪いので解決できる方法があればおねがいします。 =INDEX(A41:A51,MAX(IF(COUNTIF(A41:A51,"*"),MATCH("",A41:A51,-1)), IF(COUNT(A41:A51),MATCH(MAX(A41:A51)+1,A41:A51,1)))) すいません、あともう1つあるんですけど、隣のセルに文字が入力されたら「T」の文字が表示されるようにしたのですが、数字だけ入力されると表示されません。数字以外の文字が混ざっているとちゃんと表示されるのですが、こちらも合わせてよろしくお願いします。 =IF(COUNTIF(A5,"*"),"T","") 質問がたくさんになってしまい申し訳ありませんが、どなたかお力添えをお願いします。(Excell X for Macを使っています)

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

  • ベストアンサー
  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.3

>ただ、その隣のが、「A5」に何も入力されていない時も「F」が表示されたままになってしまいます。 確かにそうですね。 よく確かめませんでした。 A59の数式を、 =IF(LEN(AG55)>0,A5 & "","") に変更して下さい。 (隣りのセルはそのままです。)

casin
質問者

お礼

重ねての回答ありがとうございました。私はもっと複雑なものをいろいろ試してました(笑)。とてもシンプルなんですね。maruru01さんの回答を見ていると、とっつきにくかった関数ですが、イメージが変わりました。ありがとうございました。

その他の回答 (3)

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

1番目の「1」つのやり方。 (1)Sheet1のA1:B5に a 1 b 2 c 3 d 4 e 5 とします。 (2)A列に1列列挿入します。そこに抜き出したくない行に*を入れます。なんの文字でも可。 (3)Sheet2のA1に =IF(Sheet1!$A1="*","",Sheet1!B1)といれ下へ複写。 B1に =IF(Sheet1!$A1="*","",Sheet1!C1)といれ下へ複写。 (4)これでsheet2は a 1 c 3 e 5 となります。 (5)そこでSheet2のA1:B5を、同じ位置で値のみ複写し、 式を消します。 (6)そしてSheet2のA1:B5をA列でソートします。 a 1 c 3 e 5 となります。 (7)上部のスペース行を削除する。 関数だけでは、抜き出して詰めて表示するのが、(MATCHとINDIRECTを使う方法はありますが、)式が複雑になります。

casin
質問者

お礼

お返事遅れました。やってみました。仕組みは理解できましたが、毎回この作業をするのは大変かもしれないです。入力フォームのようなものを作りたかったので、抜き出した物が決められたセルの範囲で上から順番に並べば、いいなと思いました。ありがとうございました。

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.2

A59は、 =IF(LEN(AG55)>0,A5,"") で、その隣りは、 =IF(LEN(A59)>0,"F","") です。

casin
質問者

お礼

回答ありがとうございました。 A59の方はうまくいきました。ただ、その隣のが、「A5」に何も入力されていない時も「F」が表示されたままになってしまいます。「A55」を消すと、「F」も消えます。ただ、「A55」は通常入力された状態になっていて、必要な時に消去して、「A59」、隣のセルの「F」を隠すようにしています。 「A5」に入力して、「A59」に表示されてから「F」を表示されるようにしたいのですが。しつこくてすいません。自分なりにやってみますが、よろしければ回答おねがいします。

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.1

こんにちは。maruru01です。 1番目はちょっとやっかいなので、とりあえず、2番目と3番目だけ。 2番目 表示させるセルをクリックして、数式バーに、 =IF(COUNTA($A$41:$A$51)=0,"",INDIRECT("A" & MAX(IF(LEN($A$41:$A$51)>0,ROW($A$41:$A$51))))) と入力して、まだ数式バーにカーソルがある状態で、[COMMAND]を押しながら[RETURN]を押して決定します。 (数式の両端に「{}」が付いて配列数式になります。) 3番目 =IF(LEN(A5)>0,"T","") です。 なお、こちらはWindowsなので確認していません。

casin
質問者

お礼

早速のお返事ありがとうございます。お昼時だったのにすいませんでした。2番目、3番目共に完璧に出来ました。2番目はセルを結合していたので、一度解除してから再度結合したらできました。もちろんmacでも大丈夫でした(恥ずかしながら自分が何をしたのか理解できていませんが)。なかなかこれという参考書(事例がたくさんのっている等)に出会わないので、よけいに苦労しています。  あと、3番目なんですが、質問には書いてなかったのでなんですが、他のセルに「A5」の内容を表示させて、今度はとなりのセルに「F」を表示させるようにしていたんですが、何も入力していない時にも「F」が表示されたままになってしまいます。さらに特定のセル「AG55」内を消去したら(ここも3番目と同じように数字は受け付けません、先ほど教えて頂いた事を参考にやってみたんですが、うまくいかないので、もとに戻しました)セルの内容を隠すようにしています(したつもりです…)。 「A5」の内容を表示させるセル「A59」の式 =IF(COUNTIF(AG55,"*"),A5,"") 「F」を表示させるセルの式 =IF(AND(A59>"*",AG55>"*"),"F","") どちらも3番目の結果を教えて頂く前の式です。お手数でなければアドバイスお願いします。

関連するQ&A