• 締切済み

あるセルに文字が入力されている行だけを別シートにコピーする方法

ある一つのセルに文字が入力されている行だけを別シートに 自動でコピーする方法はありませんでしょうか? 顧客リストをエクセルで管理しているのですが、 「休眠顧客」をそこから自動で抜き出す方法を探しています。 たとえば、ある列を「リリース」とか「アプローチ中止」などの 項目にし、そのセルに●印が入っている行だけを自動で、別シートに 反映させたく思っています。 自動で「休眠顧客リスト」ができたらいいなって思っています。 どなたか、お教えくださいますよう、お願いいたします。

みんなの回答

  • kuma3f
  • ベストアンサー率63% (28/44)
回答No.2

思われていることと違っていましたらすみませんが、参考までに次のコードをマクロに貼り付けて試してみてください。 例は"Sheet1"のC列が●の行を"休眠顧客リスト"シートを作成して抽出します。 コードの(1)には、実際の顧客リストのシート名を記述してください。 コードの(2)には、実際の「リリース」の列番号を記述してください。(C列なら3) メニューバーの「ツール」→「マクロ」→「マクロ」をクリック  ↓ マクロのダイアログが表示されたらマクロ名に自由に名前を入力してください。(例:抽出)  ↓ 名前を入力しましたら、「作成」をクリック  ↓ Microsoft Visual Basicの画面が開きますのでSub 抽出()の下に次のコードをコピーして貼り付けてください。 Dim 行番号 As Long Dim 抽出行番号 As Long Dim 最大行 As Long Dim 顧客リスト As String Dim 列番号 As Long Dim スイッチ As Integer 顧客リスト = "Sheet1" '←顧客リストのシート名をセットしてください。…(1) 列番号 = 3 '←●が入る列を列番号でセットしてください。(C列なら3)…(2) スイッチ = 0 On Error GoTo skip1 Sheets("休眠顧客リスト").Select スイッチ = 1 skip1: If スイッチ = 0 Then '"休眠顧客リスト"シートが無かったら作成する Sheets.Add ActiveWorkbook.ActiveSheet.Name = "休眠顧客リスト" End If Sheets("休眠顧客リスト").Cells.ClearContents Sheets(顧客リスト).Select Sheets(顧客リスト).Range("A65536").End(xlUp).Select 最大行 = ActiveCell.Row 行番号 = 1 抽出行番号 = 1 '項目行を抽出 Sheets(顧客リスト).Select Sheets(顧客リスト).Rows(行番号).Select Selection.Copy Sheets("休眠顧客リスト").Select Sheets("休眠顧客リスト").Rows(抽出行番号).Select ActiveSheet.Paste Application.CutCopyMode = False 抽出行番号 = 抽出行番号 + 1 '●の行を抽出 Do If Sheets(顧客リスト).Cells(行番号, 列番号) = "●" Then Sheets(顧客リスト).Select Sheets(顧客リスト).Rows(行番号).Select Selection.Copy Sheets("休眠顧客リスト").Select Sheets("休眠顧客リスト").Rows(抽出行番号).Select ActiveSheet.Paste Application.CutCopyMode = False 抽出行番号 = 抽出行番号 + 1 End If 行番号 = 行番号 + 1 Loop Until 行番号 > 最大行 Sheets("休眠顧客リスト").Select Sheets("休眠顧客リスト").Range("A1").Select MsgBox "休眠顧客リストを作成しました。" '****コピー貼り付けはここまで **** Microsoft Visual Basicの画面を×で閉じます  ↓ Excel画面のメニューバーの「ツール」→「マクロ」→「マクロ」をクリック  ↓ 先ほど名前を付けたマクロを選択して「実行」をクリック

kimy1975
質問者

お礼

kuma3f 様 ご丁寧にありがとうございます。 やはり、マクロを使わなければいけないのですね? 実は、使った事がないので、どうなるかわかりませんが、やってみます。 結果はまた、ご報告させていただきます。 取り急ぎ、御礼だけになってしまうのですが・・・ ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
  • jo-zen
  • ベストアンサー率42% (848/1995)
回答No.1

マクロ(VBA)を使って、For ~ Next、Offsetなどをで転機して別シートを作ることはやってやれないことはないのですが、質問内容程度のことでしたら、オートフィルター機能を使って、●印の入っている行を抽出すれば済むと思うのですが。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • セルがある同じ行のリスト番号を反映して印刷する

    エクセル2003を使っています。 (1)顧客リストを作りました。 1.氏名 2.住所 3.電話番号 4.メールアドレス… (2)別シートに、この顧客データを1件につき1枚に印刷する印刷シートを作りました。 (1)にリスト番号を入力すると(2)のシートに反映するようにvlookupで反映できたのですが、「いちいちリスト番号を入力」しなければならず、可能であればリストにデータを入力している段階でリスト番号が反映されそのまま(2)のシートが印刷できるようにしたいのです。 何かいい方法はありませんか? 「セルがある行と同じ行にあるリスト番号を反映させる」という書き方でご理解いただけますか? よろしくお願いします。

  • エクセルでシート1のセルに入力すると別シートのセルに表示させるには

    依頼されて会員証をエクセル2003で作っている最中です。 SHEET1に下記の様に会員証のベースを作ました。 [●●●の会] 会員番号 [SHEET2の会員番号列] 住所 [SHEET2の住所列] 氏名 [SHEET2の氏名列] 電話番号 [SHEET2の電話番号列] [管理社名] SHEET2にまだ空欄ですが、会員番号・住所・氏名・電話番号のリスト表を作りました。 ここからが課題でして、SHEET2に会員番号、住所とセルに打ち込んでいくと SHEET1のそれぞれに対応したセルに表示させる為に SHEET1のセルに、[=Sheet2!A3]と打ち込めば、 SHEET2のA3のセルが対応されますが、 これではそのセルしか対応しません。 SHEET2の1行目に会員番号、住所から打ち込んだものは、 単純にSHEET1の表示させたいセルに[=SHEET2!○○]を打ち込めば、 それが対応されます。 ただSHEET2の2行目は空白ですので、新たに打ち込んで対応させようとしても出来ません。 毎度毎度SHEET1の表示させたセルに[=SHEET2!○○]をしていくのは大変です。 新規にリストを打ち込むたびにSHEET1の会員証に 表示させる方法はどういったものがあげられるのでしょうか? 或いは、SHEET1の会員証ベースに打ち込んでいくとSHEET2のリストに 自動的に登録される仕組みの方がやりやすいのでしょうか? 数式も教えていただければ大変有難いです。 アクセスの方がやりやすいかもしれませんが、 依頼した方のPCにはアクセスは入っていないですし、 私自身もアクセスはイマイチの部分があります。 エクセルのマクロなるものを使えません。 年始早々に使用したいとの事ですので、 なんとか仕上げてあげたいとは思います。 宜しくお願い致します。

  • ある行(の各セル)に入力されたデータが、自動的に別の行(の各セル)に表示されるようにしたい。

    Excelに関しては全くの素人のあほな質問で、大変恐縮しています。 あるブックの中のシートのある行に、各セルに「1119」「1187」「1113」「664」......などと左から右へ入力していきます。 この各セルに入力したデータが、別のブックにあるシートの特定の行の各セルに、左から右へ「1119」「1187」「1113」「664」......と、自動的に数値が入力されるようにしたいのです。 これを可能にする方法は、何かありますか? ちなみに、100個くらいの行のデータが別の行にも自動的に入力されるようにしたいと考えています。

  • 2013特定文字のセル行を別シートにコピーのマクロ

    こんにちは。 Excel 2013を使用しています。 AからAKまでの列、100行ほど(行数は変化する)の表があります。 A行にアルファベットと数字の文字列があります。 その文字列は最初の7文字がアルファベットで後の9文字が数字です。 文字列に法則がありますので手作業では以下のように抽出して 別のシートにコピーしています。 表全体を範囲指定して、「データ」-->「フィルター」-->A列で「テキストフィルター」 -->「ユーザー設定フィルター」-->「抽出条件の指定」-->「??BJ*と等しい」 (A列の3,4文字目がBJになっているものを抽出しています) 「ホーム」-->「検索と選択」-->「可視セル」-->コピーして別シートにペースト この作業は手作業でもマクロの記録でも時間がかかります。 ほかに良い方法があればそれをマクロ化したいと思います。 PCに負担のかからない早くできる方法をご存じの方お教えください。

  • 別シートのセル値を表示する方法

    どんな計算式(関数が)良いかわからずご教授ください 例)AシートのA1セルに計算式を設定してBシートのあるセル値を表示したい Bシートのあるセル値とは。。。 2行目(固定)にある一番右端にある値(ここでいえば◆。5、6列には入っていないので4列目となる) ◆がなければ3列目の×を表示したい。(可変) セル 1行目 1 2 3 4 5 6 2行目 ○△×◆ よろしくお願いします。

  • エクセルで別ファイルのデータを読み込み自動入力させたいのですが

    【顧客リスト】というファイルのsheet1に、A列を氏名、B列を住所、C列を年齢の欄として複数行入力しています。 【見積書】というファイルのセルE20に氏名を入力すると、【顧客リスト】A列から同じ値の行を探し出し、その同行のB列の値を【見積書】のE21に自動的に入力されるようにしたいと思っています。 どなたかご回答の程、よろしくお願いいたします。

  • シートの最終行から別のシートのセルをコピーしたいのですが

    (Sheet1)の最終行の次に(空白行AX,BX,CX,DX)に別のシート(Sheet2)のセルD2,G3,S4,F5をコピーしたいのですがVBAでどのように記述すればいいのでしょうか? よろしくお願いします。

  • Excel 行を自動追加する方法

    どなたかご存知の方がいらっしゃいましたら御回答お願い致します。 現在A~C列に顧客情報が入っており、D列以降には月別の金額が入っております。 A~C列は別のシートから反映させている状態です。 今まで新規顧客が増えた場合は 末尾の行に追加していたので問題なかったのですが 複数取引のある顧客に関しては枝番を付け、まとめようという話になりました。 顧客データが入っている別のシートは当然行追加すれば問題ないのですが 金額を入れてるリストは今まで通り単純に参照すると 金額の行と顧客情報の行がバラバラになってしまう為困っています。 新しい行が増えた場合、参照している側も行が増えるような仕組みはExcelでは不可能なのでしょうか?

  • 別シートに任意のセルを転記する方法について

    縦に6行ずつのデータがあり、これを横1行の別シートに転記する際に、 以前こちらで回答頂いた方法を応用したいと考えています。 =IF(INDEX(Sheet1!$Z:$Z,(ROW(A1)-1)*6+COLUMN(A1))=0,"",INDEX(Sheet1!$Z:$Z,(ROW(A1)-1)*6+COLUMN(A1))) アドバイスのとおり、上記の数式で見事に横にデータが転記できました。社員1人につき6行ずつのデータが縦にならんでおり、これを別の社員1人あたり1行で横に並んだデータにしたいというものでした。 1人目のデータは1行目を1列目に、2行目を2列目に・・・2人目のデータである7行目を1列目に、8行目を2列目に・・・3人目は13行目を1列目に・・・となります。 しかし、順次並べるのではなく、転記の必要にないデータを含むシートの任意のセルを選び、別シートの任意のセルへ転記する必要が生じたため、悩んで路頭に迷っております。。。 例えば、6行ずつのデータのうち、いつも3行目を別シートの5列目に。4行目は転記せずに、5行目を6列目に。また、6行目を7列目に転記せずに10列目に転記する。(8・9列目は、別データを入力するため空白にしたい) そして、社員2人目である7行目からは、上記と同じ規則で転記したい。 などというように、選んで転記する方法は何かありますでしょうか?? =INDEX(Sheet1!$Z:$Z,(ROW(B2)-ROW($B$2))*6+IF(COLUMN()=4,MOD(COLUMN(B2)-1,6)+1,MOD(COLUMN(B2)-1,7))) のようにしても上手くいきません。 何卒宜しく御願いいたします。

  • 選択したセルの値を別シートのセルに取り込む方法

    顧客情報を閲覧・印刷するためのフォームがsheet1とします。顧客の情報が入ったデータベースがsheet2とします。 以下のマクロでsheet2の48列目を空欄にして、48列のいずれかのセルに「出力」と入力すると、そのセルの行の値を出力結果というシートに渡すようにしています。取り込んだ行の顧客番号をsheet1のmach関数の参照先に指定して、index関数で各項目に取り込むようにしています。 Worksheets("sheet2").Activate Dim i, LastRow As Long LastRow = Cells(Rows.Count, 48).End(xlUp).Row For i = 1 To LastRow If Cells(i, 48) = "出力" Then Rows(i).Copy Sheets("出力結果").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0) End If Next i もう少しこれを改良して、Sheet2の顧客番号の入っている1列目の任意のセルを選択して、sheet1のmatch関数の参照先(例としてK4)に選択した顧客番号を渡す方法はありませんでしょうか。sheet1は顧客番号だけ取得できれば、match・index関数でフォームが完成します。 VBAは初心者です。上記マクロは検索で調べて必要な個所をコピーして今の環境にアレンジしました。よろしくお願いします。

専門家に質問してみよう