• 締切済み

No.、氏名は一行ずつ、持ち物は1名に対して0~10程度の一覧がありま

No.、氏名は一行ずつ、持ち物は1名に対して0~10程度の一覧があります。 1人1人は1行ずつあいております。 個人別の持ち物リストを作成したいのですが(日々50人程度)、フィルタだと個人の1行目の 持ち物しか抽出されません。 画像右側のようなリストには、VBAで番号から氏名持ち物を抽出させると いいのでしょうか??(No.を入力すると、氏名・持ち物の最後の行まで代入とか) マクロでもできませんでした。。 No.と氏名をそれぞれの行に記入するのは運営上(複数人が入力)難しいです。 とても困っております。。 よろしくお願いいたします。

みんなの回答

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.5

回答No4です。大変失礼をいたしました。D2セルには次の式を入力して下方にオートフィルドラッグしてください。 =IF(AND(A2<>"",COUNTIF(E:E,A2)>0),MAX(D$1:D1)+1,IF(AND(C1<>"",C2<>"",D1<>""),MAX(D$1:D1)+1,"")) 他の操作法はNo4のとおりです。

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.4

D列に作業列を作って対応するのがよいでしょう。 D2セルには次の式を入力して下方にオートフィルドラッグします。 =IF(AND(A2<>"",COUNTIF(E:E,A2)>0),MAX(D$1:D1)+1,IF(C2="","",MAX(D$1:D1)+1)) E2セルから下の行には抽出して表示させたいNoを例えば、E2セルに1、E3セルに3のように入力します。 F列からH列に抽出した表を表示させるとしてF2セルには次の式を入力してH2セルまでオートフィルドラッグしたのちに下方にもオートフィルドラッグします。 =IF(ROW(A1)>MAX($D:$D),"",IF(INDEX($A:$C,MATCH(ROW(A1),$D:$D,0),COLUMN(A1))=0,"",INDEX($A:$C,MATCH(ROW(A1),$D:$D,0),COLUMN(A1)))) これでE列に番号を入力すれば関連する表だけがFからH列に表示されることになります。

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

EXCELの表としての使い方に、反している。あえて言えば、ワード的なやり方になっている。 人間は質問のようなのが理解しやすいが、エクセルは ・行単位で(完結する)、 ・その行にキーになる情報がある ・中間に空白行を置かない 「リスト」とか「テーブル」(それぞれEXCELの熟語で、一般的使用法に非ず)と言うのがそういうもので そのようなデータの整理の仕方がEXCELに適している。 ーー 本件のシートを別シートコピーし 空白行を省き、氏名の下には氏名を入れて、フォントを白色にするVBAを書いておくから、そちらのほうで以後の応用を考えては。 例データ(--は空白セル。左詰め表示されるのを防止の対策) 氏名 持ち物 山本 靴 ーー かばん 藤田 鉛筆 木村 消しゴム ーー 筆 大野 ノート ーー 帽子 ーーーー 標準モジュールに Sub test01() '---空白行削除 d = Range("B65536").End(xlUp).Row For i = d To 2 Step -1 If Cells(i, "B") = "" Then Rows(i).Delete Next i '----氏名空白セルを補充 d = Range("B65536").End(xlUp).Row m = Cells(2, "A") For i = 3 To d If Cells(i, "A") = "" Then '空白であれば Cells(i, "A") = m '上と同じ氏名セット Cells(i, "A").Font.Color = vbWhite '文字色白色 Else m = Cells(i, "A") '氏名を覚えておく End If Next i End Sub 実行結果 見かけ 氏名 持ち物 山本 靴    かばん 藤田 鉛筆 木村 消しゴム    筆 大野 ノート    帽子 ーーーーー これでフィルタなど出来る。大野でフィルタすると ノートと帽子の行がでる。

  • mar00
  • ベストアンサー率36% (158/430)
回答No.2

Sub Macro1() KENSAKU = Application.InputBox("No.または氏名を入力して下さい。") On Error GoTo LINE: Columns("A:B").Find(What:=KENSAKU).Activate For i = ActiveCell.Row To ActiveCell.Row + 99 If IsEmpty(Cells(i, 3)) Then Exit For Else Range(Cells(i, 1), Cells(i, 3)).Copy GYOU = Cells(Rows.Count, 8).End(xlUp).Row + 1 Range("F" & GYOU).PasteSpecial End If Next i Application.CutCopyMode = False Range("A1").Select Exit Sub LINE: MsgBox (" 該当者なし。") End Sub No.または氏名で検索してコピーするようになっています。 ボタンを作って、マクロを登録すればよいのではないかと思います。

  • aokii
  • ベストアンサー率23% (5210/22062)
回答No.1

氏名の右に行を追加して、2行目に=IF(B2="",C1,B1)をドラッグコピーして、値のみ貼り付け後に、持ち物をフィルタしては。

acochaco
質問者

補足

こんにちは。 ご回答ありがとうございます。 今やってみたのですが、持ち物をフィルタするというのは 意味がわからないのですが、 すみません教えていただけますでしょうか? 行を挿入せずにできる方法があればうれしいです。

関連するQ&A

  • 一覧表の一行置きに項目名を挿入するには

    エクセルで3学年の生徒のパスワードとユーザ名の一覧表を作りました。一人一人に、クラス・氏名・パスワード・ユーザ名の項目の入った個人票を渡したいのです。  ワードで差し込み印刷にすると紙の無駄が出るので、エクセルで作ったその一覧表の一行置きに、クラス・氏名・パスワード・ユーザ名の項目の入った行を挿入し、印刷して、はさみで切って渡そうと思います。  そのやり方をご教示いただけませんでしょうか。 クラス  氏名 パスワード ユーザ名 ←これを一行置きに入れる。 3年1組 ○○○ ×××  △△△

  • エクセルでの検索

    オートフィルタで行うことを、オートフィルタをいちいち起動しなくてもできるようにしたいのですが・・・ どのようなことかといいますと、まず1万件くらいの住所録があるとします。 1行目には「氏名」「〒」「住所」と書き、2行目から1万件のデータを入力してあります。 たとえばこの中から「港区」を抽出するのに、オートフィルタだと 「港区」「を含む」 などの条件で抽出できますが、オートフィルタを使わずに、1行目の「住所」の右のセルに(D4)に「港区」と入力しただけで 港区が抽出されるようにしたいのです。 条件は「を含む」くらいしか使用しません。 なにかアドバイスをお願いします。

  • フィルタオプションの設定

    「フィルタオプションの設定」で、リストから商品がバスタオルでかつ金額が15000以上40000以下のデータを抽出したいのです。 通常なら、検索条件は1行に入力すると思いますが、それを2行に分けて入力する抽出方法はありませんか?

  • アクセス2007 VBAで抽出の一部解除

    超初心者ですが、よろしくお願いします。 アクセスのVBA で2つのフィールド(文字列)にフィルタをかけて抽出するようにしています。その際、1つのフィールドのフィルタのみを外したいのですがうまくいきません。ワイルドカード%を代入するとフィルタすべてが効かなくなってしまいます。また、" "を代入すると何も表示されません。どのようにしたらうまくいくのでしょうか。ご教示よろしくお願いします。

  • 合計が0の行を削除

    計算式が入力されており、合計が0(A,B列に数値が入力 されていない)の行を削除するVBAを教えてください。   A  B  C    1  10  5 15 2       0 3  20  6 26 C列に計算式が入力されています。 50行目まで入力されています。 オートフィルタを使用し、抽出された行を削除する方法が あると思いますが、VBAで作成する方法を探しています。 よろしくお願いします。

  • AccessのデータをExcelに貼り付け

    AccessのデータをフィルターしてExcelに貼り付けるには、AccessとExcelのどちらのVBAを使えば良いでしょうか。 前提:Accessに10フィールド100行くらいのデータがあり、Excelに氏名と日付を入力する欄がある。 処理:AccessのデータをExcelに入力した氏名と日付でフィルター(AND検索)→フィルターしたままExcelに貼り付け→そのデータをExcelの関数とVBAで処理(複雑な関数なのでAccessで処理できない)

  • エクセルのフィルタ リスト範囲が設定できません。

    エクセル2003を使用しております。 150件近くある住所リストから年賀状住所を印刷するため抽出するための列(「年賀印刷先」)を作成し、印刷する住所に「1」を入力しフィルター抽出もしくは並べ替えを行ったのですが、全データを見てくれません。 住所は141行目まで入力されているのですが、リスト範囲が36行目しか見ていないようです。フィルターオプション設定のリスト範囲で修正をするのですが、オートフィルタを設定するともとの状態に戻っています。 一度全データを新しいファイルでテキスト貼り付けして保存をしたりとしてみたのですが、何か他の設定が影響しているのでしょうか? 心当たりがなく困っております。 よきアドバイスをお願いします。

  • エクセル2003 VBAで セル内を 一発呼び出し

    エクセル2003 オートフィルタではなく VBAで セル内を 一発呼び出ししたいので。  よろしく お願いします。 表 列A~E(結合2行) :商品名と内容   列H~K(結合2行) 住所氏名電話番号を記載してます。 1年分を オートフィルターで  氏名 や 商品名で 探すのは 結構 時間がかかります。 同じものが ほぼ少ないため。。。 そこで  たまに 同じ氏名  同じような 品を 検索する セルを 2個ほど作って  そこへ セル1へ 商品名を入力すると  該当する 行のみ 表示される。 セル2に 名前をを入力すると  該当する 行のみ 表示される。 また、セルを赤色に塗った部分の結合行(2~3行)を 赤色に塗りつぶした行のみ 表示も できれば うれしいです。 コマンドボタン等を使ってもいいので お願いします。 そんな VBAを 作っていただけませんでしょうか^^; お手数おかけしますが どなたか よろしく お願いします。 

  • フィルタ検索後、最上位行に移動する方法

    シート(請求書データベース)内のデータにフィルターをかけてデータ抽出後、最上位行に移動するVBAをご教授願いますでしょうか? ちなみにフィルター検索後も下記VBAで最下位行に移動はできます。 Sub 最下位行移動() Selection.End(xlDown).Select End Sub 下記VBAでは、フィルター検索後でも単純にA1行が選択されるだけで、フィルター抽出後の最上位行に移動できません。A1行は固定窓に設定しています。 Range("A2").Selectを入れると、フィルター抽出を解除した後であれば問題ないのですが、フィルター抽出後はA1行(先頭行)の下は何行目が来るかわかりません。 Sub 最上位行移動() Selection.End(xlup).Select End Sub

  • excelオートフィルタの検索条件をセルに入力したい

    以下のようなexcelのリストがあるとします。     A       B    C~ 1 佐藤・鈴木  Aタイプ 2 田中・山田  Bタイプ 3  佐藤     Aタイプ 4  田中     Cタイプ 5 山田・鈴木  Cタイプ A列の"田"が含まれる行を抽出したい場合 オートフィルタをかけ、オプションの抽出条件の指定で "田"を含む、で検索すれば良い、というのはわかります。 ですが、この動作をもうちょっと簡単にできないかと思っています。 具体的には、以下のようにセルに入力して検索・抽出するとはできないでしょうか。     A       B    C~ 1   田 2 3 4   A       B    C~ 6 田中・山田  Bタイプ 8  田中     Cタイプ 9 山田・鈴木  Cタイプ (1、2行目=検索用 3行目=空き 4行目以降=リスト) 過去の質問で、同じようにセルに入力して抽出する方法を 聞いていた方がいらっしゃったので参考にしようと思ったのですが 方法がVBAを使ったもので、VBAの知識がまったく無いために さっぱり理解することができませんでした。 何か良い方法がありましたら教えていただけないでしょうか。

専門家に質問してみよう