ここから本文です

Sheet1のようなデータを Sheet2のように家族が複数いる場合、

hir********さん

2019/6/1118:37:24

Sheet1のようなデータを
Sheet2のように家族が複数いる場合、

世帯主氏名と家族1、家族2、家族3...かつ空白セルを無くして上詰めで表示上記ができるのでしたらその関数を教えてください。
作業列や作業シートを使用した方法でもよいので
教えてください。

補足
空白に見えるセルには、
関数が入っています。

また、sheet1のデータは、
別のシートでデータ加工(関数で情報を抽出して)して
関数で読み込んでいます。

Sheet1,関数,Sheet2,0.1 Sheet1,データ,世帯主氏名,IFERROR

閲覧数:
79
回答数:
2
お礼:
500枚

違反報告

ベストアンサーに選ばれた回答

lgk********さん

2019/6/1303:37:39

図が小さくて見えないのですが、
Sheet1 3行目から
A1 管理番号
B1 世帯主氏名
C1 有効期限
D1 ?
E1 家族氏名
F1 ?
Sheet2 2行目から
A1 管理番号
B1 世帯主氏名
C1 有効期限
D1 家族氏名
E1 ?
だと思います。
世帯主だけ氏名と?の間に有効期限が入っている。

Sheet2
F列をワークエリアに使います。
B2 =IFERROR(OFFSET(Sheet1!B$3,(MATCH(ROW()-1,F:F,0)-2)/8,0),"")
C2 =IFERROR(OFFSET(Sheet1!C$3,(MATCH(ROW()-1,F:F,0)-2)/8,0),"")
D2 =IFERROR(OFFSET(Sheet1!B$3,(MATCH(ROW()-1,F:F,0)-2)/8,MOD(MATCH(ROW()-1,F:F,0)-2,8)*2+(MOD(MATCH(ROW()-1,F:F,0),8)<>2)),"")
E2 =IFERROR(OFFSET(Sheet1!D$3,(MATCH(ROW()-1,F:F,0)-2)/8,MOD(MATCH(ROW()-1,F:F,0)-2,8)*2),"")
F2 =F1+(OFFSET(Sheet1!$C$3,(ROW()-2)/8,MOD(ROW()-2,8)*2)&""<>"")
下へコピペ

何列まであるのか判らないので、図の通りR列まで、世帯主を含めて最大8人としました。もっと多い場合、「/8」「,8」を増やして下さい。

  • 質問者

    hir********さん

    2019/6/1318:02:13

    ご回答者様

    ご回答ありがとうございます。

    ご回答いただきました関数で
    無事データを加工することができました!!

    私の質問の記載や添付した画像が不明瞭にもかかわらず
    意向を読み取っていただき感激です。

    OFFSET、MATCH関数などなどのロジックが
    全く理解できないので
    何がどうなって希望のデータを抽出できたのか
    魔法としか思えませんが…(^^;

    本当に助かりました!!!

    ありがとうございまたm(_ _)m

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

質問した人からのコメント

2019/6/13 18:08:56

他にも回答をいただきましたが、こちらの関数でデータが抽出できました。
そのため、こちらの回答者様をベストアンサーに選ばせていただきました。

ご回答いただきました皆様本当にありがとうございました。

ベストアンサー以外の回答

1〜1件/1件中

mit********さん

2019/6/1208:52:33

シート1の表は3行目から下方にデータが有るとして作業列を作って対応します。
例えばシート1のAA2セルには必ず0を入力してから、AA3セルには次の式を入力して下方にドラッグコピーします。

=IF(B3="","",SUMPRODUCT((MOD(COLUMN(E3:Z3),2)=1)*(E3:Z3<>""))+1+MAX(AA$2:AA2))

その後にお求めの表ですがシート2のA2セルには次の式を入力してE2セルまで横にドラッグコピーしたのちに下方にもドラッグコピーします。

=IF(ROW(A1)>MAX(Sheet1!$AA:$AA),"",IF(COLUMN(A1)=1,ROW(A1),IF(COLUMN(A1)<=3,INDEX(Sheet1!$B:$C,MATCH(ROW(A1)-0.1,Sheet1!$AA:$AA,1)+1,COLUMN(A1)-1),IF(COLUMN(A1)<=5,IF(COUNTIF($B$2:$B2,$B2)=1,IF(COLUMN(A1)-3=1,$B2,INDEX(Sheet1!$D:$D,MATCH(ROW(A1)-0.1,Sheet1!$AA:$AA,1)+1)&""),INDEX(Sheet1!$E:$Z,MATCH(ROW(A1)-0.1,Sheet1!$AA:$AA,1)+1,COUNTIF($B$2:$B2,$B2)*2+COLUMN(A1)-7)&""),""))))

B列のセルの表示形式は「日付」から好みの表示に変えます。
なお、シート1の作業列が目障りでしたらその列を選択して「非表示」にすればよいでしょう。

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる