• 締切済み

ブランクのみ抽出させる

Win10 のOfice356 Excelは2016だと思います。 各列に 日付 ・バン詰めNo. ・車名・フレームNo.・納車先・到着予定日・...・...・ と列はO列まであります。 別BOOKに可能ならそれがいいですし、できないなら別シートでもいいのですが、 バン詰めが終わってない空欄状態の行を列を限定して一覧を作りたいです。 B列が空欄で、Bの他に欲しい列がA C D G J K N であるとします。 私が今行っている作業は、オートフィルターでバン詰めNo.の空欄を絞り込み、 上記記載の列以外の列を非表示状態にしてctrlタブで列を選択して別BOOKに コピペさせてます。 その方法以外に関数等使って何かないでしょうか? VBAは全くわかりません。 マクロもどこまでどのような作業が記録できるのかよくわかりません。

みんなの回答

  • HohoPapa
  • ベストアンサー率65% (455/693)
回答No.4

>VBAは全くわかりません。 VBAに挑戦するようなら、 ADODB(とSQL)を使ったコードを考えてみました。 もしよかったら、挑戦してみてください。 挑戦し、よくわからないようなら聞いてください。 >別BOOKに可能ならそれがいいですし、 >できないなら別シートでもいいのですが 示したコードは、後者です。 標準モジュールに配意します。 前者でということであれば、  cn.Open ThisWorkbook.FullName   '抽出元  'cn.Open ThisWorkbook.Path & "\抽出テスト.xlsx" を  'cn.Open ThisWorkbook.FullName   '抽出元  cn.Open ThisWorkbook.Path & "\抽出テスト.xlsx" としてみてください。 抽出テスト.xlsx が抽出元のブックです。 予め開いておく必要はありません。 抽出先は、マクロを格納したブックの Sheet2です。 Option Explicit Sub SearchSelMain()  '変数定義  Dim cn As Object  Dim rs As Object  Dim wkSQL As String    'ADODB定義  Set cn = CreateObject("ADODB.Connection")  Set rs = CreateObject("ADODB.Recordset")  cn.Provider = "Microsoft.ACE.OLEDB.12.0"  cn.Properties("Extended Properties") = "Excel 12.0;HDR=NO;IMEX=1"  cn.Open ThisWorkbook.FullName   '抽出元  'cn.Open ThisWorkbook.Path & "\抽出テスト.xlsx"  'SQL文の組立  wkSQL = "" 'A B C D G J K N :1,2,3,4,7,10,11,14列目  wkSQL = wkSQL & "SELECT F1,F2,F3,F4,F7,F10,F11,F14" & vbCrLf  wkSQL = wkSQL & "FROM [Sheet1$A2:Z65000]" & vbCrLf  wkSQL = wkSQL & "WHERE " & vbCrLf  wkSQL = wkSQL & " F2 is Null " & vbCrLf    'SQL実行  rs.Open wkSQL, cn    '出力先クリアー、結果セット出力  With ThisWorkbook.Sheets("Sheet2")   .Rows("2:65000").ClearContents   .Cells(2, 1).CopyFromRecordset rs  End With  '後処理  rs.Close  Set rs = Nothing  cn.Close  Set cn = Nothing   End Sub

全文を見る
すると、全ての回答が全文表示されます。
  • chayamati
  • ベストアンサー率41% (257/615)
回答No.3

データリボンのフィルタを使います

全文を見る
すると、全ての回答が全文表示されます。
  • mt2015
  • ベストアンサー率49% (258/524)
回答No.2

マクロの記録を使ってみませんか? 別ブックへのコピーはちょっとコツが必要なので別シートへのコピーにして、最後にオ-トフィルタを解除する所までを記録してみてください。

全文を見る
すると、全ての回答が全文表示されます。
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.1

質問ぶりからこの問題に対処するには、エクセルをわかった人に聞くしかないだろう。 特に、エクセル関数!で、条件を付けて、シートのデータを抜き出すのは、エクセルの課題の中で複雑な課題だ。 この質問コーナーは、文章と関数式によって回答せざるをえない、手段と方法論の制約があり、対話や講義を聞くに比べ、相当劣った手法だ。 何か良い回答や説明方法がないか、と期待する前に質問者が、時間をかけてエクセル(特にVBAやアクセスなどを)勉強するしかない。時間がない、金がない、人がないと言われても、回答者はどうしようもない問題。 仕事に関することのようだから、専門の人に頼むべきだ。社内には、あるいは委託先システム業者には、専門家もいるだろう。 ーー 説教するだけではと思って、好き嫌いはあろうが、1つの方法を挙げておく。Imogasi方式と自称。 ーー Sheet1 元データ これぐらい質問者が、文章でなく、テキスト画面か画像添付で例示すべきだ。想像で作っているので、欠点があるかも。 A1:F7 日付  パン詰めNO  車名  フレーム  納車先  判定サイン 2018/7/27 1  T 12 AA社 2018/7/27  N 23 AB社     1 2018/7/27    T 24 AC社     2 2018/7/27 3  I 23 AD社 2018/7/27    H 56 AB社      3 2018/7/27 6  T 12 AA社 判定サイン列のF2の式は =IF(B2="",MAX($F$1:F1)+1,"") 条件に該当する」行に上行から順に連番を振っている。 ーー Sheet2に行って 全列!全項目データを出す場合は A2に  =INDEX(Sheet1!$A$1:$F$10,MATCH(ROW()-1,Sheet1!$F$1:$F$10,0),COLUMN())と入れて、右列方向に式を複写。 A2行の式を下方向に式複写。 結果 Shee2に A1:G4 日付 パン詰めNO 車名 フレーム 納車先 条件該当と順番サイン 2018/7/27 0 N 23 AB社 1 2018/7/27 0 T 24 AC社 2 2018/7/27 0 H 56 AB社 3 第1行はSheet1から複写するか手で入力する。 A列は、日付なので、整数が出るが、日付に設定すること。 望みの列を選択するなら、式のCOLUMN()の部分を列番号数字で指定する。 複写は効果が出ないので、各列手動指定となり、行の複写だけが関数利用の効果を出せる。 Sheet3のA2  =INDEX(Sheet1!$A$1:$F$10,MATCH(ROW()-1,Sheet1!$F$1:$F$10,0),1) B2の式  =INDEX(Sheet1!$A$1:$F$10,MATCH(ROW()-1,Sheet1!$F$1:$F$10,0),3) C2の式 =INDEX(Sheet1!$A$1:$F$10,MATCH(ROW()-1,Sheet1!$F$1:$F$10,0),5) これでSheet3に出る列が選択されてたことが判る。

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

関連するQ&A

  • データ抽出のやり方について

    B列に番号R列に文字列を入力しているデータがあります。R列で特定の文字列である場合にB列の番号を別シート(sheet2)に上詰めで表示したいのですが、以下の関数式(sheet2)で表示はさせられるのですが、できれば表示させるB列の最大番号より後ろは空欄(関数は入っているが表示が何もない状態)になるようにしたいのですが、#NUM!となってしまいます。どのような式にすればよいのか教えていただけないでしょうか。わかりづらいかもしれませんが、どなたかおわかりの方宜しくお願い致します。 =IF(ROW($A1)>MAX(sheet1!T:T),"",SMALL(sheet1!T:T,ROW($A1)))

  • 指定した文字数を違うブックへ貼付けたい

    こんにちは。 マクロで下記作業をしたくて悩んでいます。 【Aブック シートa A列】 ↓ A列の前6文字を ↓ 【Bブック シートb B列】へ貼付け A列が空欄になれば処理は終了 MIDを使って作っていたのですが、別ブックへの貼付けが組めません…。 検索をしても丁度参考になるものが見つけられませんでした。 詳しい方、ご教示頂けませんでしょうか? よろしくお願いいたします。

  • エクセル データの抽出の仕方 教えてください

    エクセル初心者です。 過去の質問を探してみたのですが、自分の探し方が検討外れのようで、何をどのようにすればよいか判らず、質問させて頂きます。 よろしくお願いします。 やりたいことは、”現在の作業状況と予定日を知りたい”です。 作業ごとに『準備』『作成』『提出』という作業項目があり、それぞれに「予定」と「実績」列があります。 そこで、予定に値があり、実績が空欄の場合、その作業と予定の値を、作業状況の状態、日付に挿入したいです。 A_|B__|C__|D__|E__|F__|G__|H__|I__|J__|K__|L ――――――――――――――――――――――――――――――――――― 作業|準備_____|作成_____|提出_____|説明_____|__|作業状況  ----------------------------------- __|予定|実績|予定|実績|予定|実績|予定|実績|__|状態|日付 ----------------------------------- 01__|4/10|完了|4/15|__|4/20|__|__|__|__|__|__ ----------------------------------- 02__|4/12|__|__|__|__|__|__|__|__|__|__ ※表の”_”は表の崩れを少しでも直そうとしていれただけなのできにしないで下さい※ 01の作業を例にとると、 「予定」4/15(D列)と「実績」空欄(E列)が条件を満たすので、 作業の『作成』(D、E列結合)と「予定」の4/15(D列)を 作業状況の「状態」(K列)、「日付」(L列)にその値を返し、 01の作業状況は、”作成で予定は4/15”になっているとわかる A_|B__|C__|D__|E__|F__|G__|H__|I__|J__|K__|L ――――――――――――――――――――――――――――――――――― 作業|準備_____|作成_____|提出_____|説明_____|__|作業状況  ----------------------------------- __|予定|実績|予定|実績|予定|実績|予定|実績|__|状態|日付 ----------------------------------- 01__|4/10|完了|4/15|__|4/20|__|__|__|__|作成|4/15 ----------------------------------- 02__|4/12|__|__|__|__|__|__|__|__|準備|4/12 上記のようなことがしたいです。 自分としては、以下のように考えていけばよいのかな?と思っているのですが、 これをエクセルの何を使ってやればいいのだろう…と悩んでいる状態です。 (1)空欄の列を探す (2)空欄の列が「実績」だったら、  ひとつ前の「予定」欄の値を、作業状況の「日付」欄に挿入  「作業」欄の値を、作業状況の「状態」欄に挿入   うまく説明ができなく申し訳御座いませんが、よろしくお願いします。

  • 至急お願いします。エクセルデータの抽出

    エクセルの別シートのA列とB列を比較して、重複データがある場合はyesをない場合は空欄をどちらかのシートの新しい列に作りたいと思っています。 この場合何を使えばよいでしょうか? どうすれば良いか教えてください。

  • VB初心者です。

    二つのブックを開いているときに。 1のブックの指定の文字を含む行のみを2のブックに参照していく作業をしたいのですが、色々webで探していたのですが、いまいちよくわからなかったので質問させていただきました。 やりたい内容 (1) ブック1とブック2を同時に開いている (2) ブック2でVBを実行する (3) ブック1の1列目を参照して任意の文字ががある場合にブック2の1行目からどんどんコピペしていく ブック1 1列目  2列目  3列目  4列目  5列目 指定   あ     い     う     え 不一致  か     き     く     け 不一致  さ     し     す     せ 指定   た     ち     つ     て ブック2 1列目  2列目  3列目  4列目  5列目 指定   あ     い     う     え 指定   た     ち     つ     て このような状態にしていきたいのですが、お分かりになる方いらっしゃいましたら、お力添え頂ければ幸いです。 よろしくお願い致します。

  • Excelのマクロで()内の文字を抽出して書き出したい

    HTMLにあるテーブルの部分をコピペして貼り付けたExcelファイルがあります。 A~Cまでの3列が埋まっている状態で、D以降の列は空欄です。 C列に123(1112)というように、数字(数字)の記載になっている部分があります。 ()の前と、中は必ず半角数字で、桁は1桁~5桁までと幅広い状態です。 この()内の数値をD~F欄に書き出したいです(縦3列のものを、横3列として書き出したい) 数字(数字)という記載のセルは、必ず縦に3つ並んでいますが C列は膨大なセル数なうえに、数字(数字)という記述以外のセルも間に入っております(数字のみのセルか、空欄のセルです) 3つ並んでいる部分のみを探して、()内の数値を抽出し、D~F列に書き出すことは可能でしょうか? 書き出す場所は、3つ並んでいるC列の最初のセルの横のD~Fだと助かります。 (数字(数字)がC6~8にあった場合、D6~F6に書き出される) なお、数字(数字)というセルはC列以外にはなく、4つ以上縦に並ぶ事もありません。 さすがにこのような内容を実行するのは不可能でしょうか? もし可能でしたら、マクロを組んでいただきたいです・・・よろしくお願いします。

  • -excel-違うブックの文字列を含む行の抽出

    商品の価格を一括で変更できる方法を探しているのですが見つからず困っています。 全ての商品データが載ってるブックAがあります。価格を変更する商品のIDと値下げ後の値段が載っているブックBがあります。ブックAの商品価格をブックBの値下げ後価格に変更したいのですが、関数か、マクロなど何か良い方法はないでしょうか? 最悪価格は手動で変更するとしてせめてブックBのIDと合致するセルを持つブックAの行を抽出する方法はないでしょうか?抽出した行は別ブックにまとめてくれるとなお助かります。 ちなみにブックAには7000行、ブックBには1000行のデータがあります。 ブックA(商品データ) A列・・・・・・    F列・・・・・・・・ ID         価格 1234        2500 2345        3200 3456        1200 4567        3000 5678        1800 ブックB(価格変更データ) A列        B列 ID         価格 2345        2600 5678        1500 ↓ ブックA(商品データ)もしくは新規ブックC A列・・・・・・    F列・・・・・・・・ ID          価格 1234        2500 2345        2600 3456        1200 4567        3000 5678        1500 といった感じです。どなたかお知恵をお貸しください。よろしくお願いいたします。

  • エクセルで、可視セルだけにコピペをしたい。

    宜しくお願い致します。 例えですが・・・ A列にはランダムで色んな果物の名前 B列には果物の色 C列はすべて空欄 (1)A列をオートフィルタで「りんご」を抽出 (当然ですが、抽出された行は飛び飛び状態です。) (2)抽出したデータのみ、C列に「おいしい」と入力する。 このようにいたってシンプルな作業なのですが、 抽出した状態で、C列の一番上のセルに「おいしい」と入力し、 それをCtrl+Cでコピーし、Ctrl+↓キーで一番下まで貼り付け をしたら、C列の可視セル以外のところにも貼り付けられてしまったのです。こういうやり方は間違ってるのでしょうか。 ためしに、新規にexcelを開いて、同じようにコピペしたら 可視セルのみ貼り付けされてたんです。 状況によっては、上記のやり方だと可視セル以外も貼り付けられてしまうことがあるのでしょうか。 分かりにくくて申し訳ありませんが、宜しくお願い致します。 あるんでしょうか。

  • マクロに関する質問!マクロを初めて数日の初心者です。

    マクロに関する質問!マクロを初めて数日の初心者です。 ルーティン業務をなんとかマクロで出来るようにしてみたのですが、、下記2つの作業をどの様にコード(?)で記入すればよいのか分からず、下記のみマニュアルで行うしかない状況です。 実は、昨日もこちらで質問させていただき、皆様からの回答に助けられました。 またお知恵を拝借できればと思います。 質問1.タブ1の、B列及びN列で、下記の条件に該当する行を切り取って、タブ2 の入力がある最終行の次に入力する。 【条件】 B列:_○で終わる もしくは N列:XX、△△と等しい (質問1.とは別の質問です) 質問2.タブ2のB列に順に管理No.が割り振られているのですが、その最後の数字 をチェックし、 タブ1のB列の空欄部分の上から順に、その次の番号から入力する。 【タブ1.イメージ】 A     B いちご 332 りんご 400 みかん 空欄 ぶどう 空欄 タブ1.のB列には、タブ2で既に出てきているものに関しては、数値が入力してあ ります。(A列をキーにV-lookup) ひっぱってこれなかったもに関しては、空欄にするようにしてあります。 空欄は、新規の登録という事になるので、最後の管理No.の次の数字から順に割り振 りを行いたいです。 つまり、タブ1.B列の上から順にタブ2.のB列の一番最後の数字の次の値から自 動で入力する様にしたいです。 (例えば、タブ2.B列の最後の数字が432の場合、上記イメージの空欄に、433, 434と割り振る) 可能でしょうか? よろしくお願いします。

  • エクセルのハイパーリンクの一括作成

    EXCEL2003を使用しております。 A列に6桁のナンバーが入力されていて、 B列にそのナンバーがファイル名となっている 別のフォルダーのBOOKをハイパーリンク設定して、 B列の表示名は、A列と同じ6桁のナンバーにしたいのですが、 一括で設定できる方法があれば教えていただきたいです。 VBAを使用すればできるような気がしますが、 VBAはまったくわからないので、どうかよろしくお願いいたします。

このQ&Aのポイント
  • ideapad s540のカメラが映らない問題について解決方法をご紹介します。
  • Lenovo ideapad s540のカメラが動作しない場合、以下の対処法を試してみてください。
  • ideapad s540のカメラ映像が表示されない場合、カメラドライバの更新や設定の確認を行うと解決できることがあります。
回答を見る

専門家に質問してみよう