[[20230713100220]] 『別シートへ抽出したい』(ともこ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『別シートへ抽出したい』(ともこ)

よろしくお願いいたします。

シート1

通  枝番   日付   D列      E列   F列
1   1    7/3   運転しない   空欄
2   1    7/4   私有車     2815
2   2    7/4   空欄      空欄     
3   1    7/5   休暇      空欄   空欄
4   1    7/6   レンタカー   2222   空欄
4   2    7/6   空欄      空欄

シート2 
A列    B列
7/3    運転しない
7/4    2815
7/5    休暇
7/6    2222

シート1からシート2へB列を抽出したいのです。

IF関数とVLOOKUPとOffsetを使ってましたが上手くいきません・・・
シート1は行を削除したり挿入することも想定しています。
お知恵をいただけますか?

< 使用 Excel:Excel2010、使用 OS:Windows10 >


 >シート1からシート2へB列を抽出したいのです。
 >IF関数とVLOOKUPとOffsetを使ってましたが上手くいきません・・・

無理にとは言いませんが、【どのようなルール】で抽出しているのか、【どのようにうまくいかないのか】説明できませんか?

(もこな2) 2023/07/13(木) 10:18:02


仕様も実際のコードも書いていないのに
>IF関数とVLOOKUPとOffsetを使ってましたが上手くいきません・・・
>お知恵をいただけますか?
そりゃあんさん、無茶でっせ!

(そう思わん?) 2023/07/13(木) 10:28:32


枝番が1と日付けで抽出
E列が空白でなければ抽出
E列が空白であればD列を抽出です。
下の公式に最初はOffsetで左側を抽出していたのですが
シート1の行を追加や削除をしているとずれるみたいだったので
下記のようにしてみましがうまくいきません。
INDEXやMATCHを使った方がいいでしょうか?

=IFERROR(IF(VLOOKUP($A10,入力!$C:$E,3,0)<>"",VLOOKUP($A10,入力!$C:$T,2,0),VLOOKUP($A10,入力!$C:$E,3,0)),"")
(ともこ) 2023/07/13(木) 10:30:15


 >シート2へB列を抽出したいのです。
 A列の日付は入力済みってこと?

 >シート1は行を削除したり挿入することも想定しています。
 それでどうなるかは試してません。

 ・Sheet1のD列以降は手入力(数式の結果ではない)
 ・枝番1で、Sheet1のD列以降がすべて空白ということはない
 ・Sheet2は1行目から

 B1 =IFERROR(VLOOKUP(A1,Sheet1!C:F,COUNTA(INDEX(Sheet1!D:F,MATCH(A1,Sheet1!C:C,0),0))+1,FALSE),"")
 下コピー
 少なくとも例示通りにはなります。

 または
 B1 =IFERROR(LOOKUP(1,0/(INDEX(Sheet1!D:F,MATCH(A1,Sheet1!C:C,0),0)<>""),INDEX(Sheet1!D:F,MATCH(A1,Sheet1!C:C,0),0)),"")

 参考まで
(笑) 2023/07/13(木) 11:04:35

 >E列が空白でなければ抽出
 >E列が空白であればD列を抽出です。

 D列とE列の2列だけ?

 2列だけなら
 B1 =IFERROR(VLOOKUP(A1,Sheet1!C:E,2+(INDEX(Sheet1!E:E,MATCH(A1,Sheet1!C:C,0))<>""),FALSE),"")

 参考まで
(笑) 2023/07/13(木) 11:13:23 数式ちょっと修正 11:26

 2列だけなら、そちらが試した式の場合

 B1 =IFERROR(IF(VLOOKUP(A1,Sheet1!C:E,3,0)<>"",VLOOKUP(A1,Sheet1!C:E,3,0),VLOOKUP(A1,Sheet1!C:E,2,0)),"")

 参考まで
(笑) 2023/07/13(木) 11:39:58

説明不足ですいません。
シート2は8列目よりはじまります
シート2Aに日付けはすでに入力済みです。
シート2のC列から抽出です。

シート2 
    A列     C列
8行目  7/1
     7/2
  7/3    運転しない
  7/4    2815
  7/5    休暇
  7/6    2222

C8=IFERROR(VLOOKUP(A8,入力!C:E,COUNTA(INDEX(入力!D:E,MATCH(A8,入力!C:C,0),0))+1,FALSE),"")

入れてみましたが「運転しない」「休暇」は抽出されないようです。

(ともこ) 2023/07/13(木) 11:59:01


 >「運転しない」「休暇」は抽出されないようです。
 Sheet1のE列を数式で空白にしてませんか?
 その式は、手入力だったら、と書きましたけど・・・

 D列とE列の2列だけなら

 C8 =IFERROR(IF(VLOOKUP(A8,入力!C:E,3,0)<>"",VLOOKUP(A8,入力!C:E,3,0),VLOOKUP(A8,入力!C:E,2,0)),"")

 これでいいのでは?
(笑) 2023/07/13(木) 12:17:49

プルダウンではダメということでしょうか?
勉強不足で申し訳ありません。
(ともこ) 2023/07/13(木) 12:22:06

確かに手入力だと大丈夫でした。
実は下記の数式は当初私も試してみました。
参考までになぜ手入力でないといけないか教えて下さい

C8 =IFERROR(IF(VLOOKUP(A8,入力!C:E,3,0)<>"",VLOOKUP(A8,入力!C:E,3,0),VLOOKUP(A8,入力!C:E,2,0)),"")
(ともこ) 2023/07/13(木) 12:29:04


 >プルダウンではダメということでしょうか?
 これはどこの話?
 Sheet1のD列とE列は、入力規則のリストから選択してるってこと?

 >参考までになぜ手入力でないといけないか教えて下さい
 Sheet1のE列を数式の「""」で空白にしてるんだったら
 COUNTA 関数はそれもカウントするから。

 例示の「7/3」の場合
 =COUNTA(INDEX(入力!D:E,MATCH(A8,入力!C:C,0),0))+1
 この式は「2」にならないとダメなのに、E列を数式で空白にしていたら「3」になってしまいます。

 で、D列とE列の「2列」だけ?
 書き忘れてましたが、2列だけなら ↓ でもできますよね。

 C8 =IFERROR(VLOOKUP(A8,入力!C:E,2+(INDEX(入力!E:E,MATCH(A8,入力!C:C,0))<>""),0),"")

 以上
(笑) 2023/07/13(木) 12:47:39

 >C8 =IFERROR(VLOOKUP(A8,入力!C:E,2+(INDEX(入力!E:E,MATCH(A8,入力!C:C,0))<>""),0),"")

   ↓ の方がいいかも
 C8 =IFERROR(VLOOKUP(A9,入力!C:E,2+(VLOOKUP(A9,入力!C:E,3,0)<>""),0),"")

 以上
(笑) 2023/07/13(木) 12:59:12

「プルダウン」がおもむろに出てきたり、あんさん説明不足がエグイって。ほんま。

(そう思わん?) 2023/07/13(木) 13:37:14


(笑)様

様々なパターンを教えていただき
勉強になりました。

シート1のD列がプルダウンでも全く問題ありませんでした。

C8 =IFERROR(VLOOKUP(A8,入力!C:E,2+(INDEX(入力!E:E,MATCH(A8,入力!C:C,0))<>""),0),"")
若しくは

 C8 =IFERROR(VLOOKUP(A9,入力!C:E,2+(VLOOKUP(A9,入力!C:E,3,0)<>""),0),"")

(ともこ) 2023/07/13(木) 15:42:48


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.