• 締切済み

vba 別シートからの複数検索

ご教授ください。 エクセルで同じファイルにある別シートからsheet1のI列とJ列を検索する方法を教えてください。条件としては以下になります。 (1)sheet(6)にあるA1からA60に入力されている4桁から6桁の文字(A0000,A1000-2など)をsheet1のJ列から検索する。 (2)見つかったらsheet4にその行をコピーする。 (3)sheet(7)にあるA1からA1000に入力されている10桁の数字をsheet1のI列から検索する。 (4)見つかったらsheet5にその行をコピーする。 以上、よろしくお願い致します。

みんなの回答

noname#192382
noname#192382
回答No.1

下記のマクロでご質問の(1)と(2)のところを実行できます。ただしシート1、シート6の行数シート1の列数はマクロの中で指定してください。現在はすべて10としてあります。 Option Explicit Sub Macro1() ' ' Macro1 Macro ' マクロ記録日 : 2013/11/21 ユーザー名 : Dim gyo6 As Integer, gyo1 As Integer, gyo4 As Integer, gyosu6 As Integer, chkdat As Variant, mycol As Integer, retusu1 As Integer, gyosu1 As Integer gyosu6 = 10 'シート6の行数 gyosu1 = 10 'シート1の行数 gyo4 = 1 retusu1 = 10 'シート1の列数 For gyo6 = 1 To gyosu6 chkdat = Worksheets("Sheet6").Cells(gyo6, 1) For gyo1 = 1 To gyosu1 If Worksheets("Sheet1").Cells(gyo1, 10) = chkdat Then For mycol = 1 To retusu1 Worksheets("Sheet4").Cells(gyo4, mycol).Value = Worksheets("Sheet1").Cells(gyo1, mycol).Value Next gyo4 = gyo4 + 1 Else End If Next Next End Sub

関連するQ&A

  • 複数シートからのデータ検索、コピー

    シートから条件に合致するデータを検索して、別ファイルの新しいシートにそれぞれ必要なデータ部分だけをコピーしたいのですが、検索するシートも複数で、また検索条件も複数のためか、過去の質問等を見ましても良く分かりませんでした。(マクロ等は余り使ったことが無い初心者です。)そこで、どなたかお詳しい方に教えて頂ければ、と思いまして投稿致しました。 シートは”貸借対照表”と”損益計算書”の2つあります。 抽出データは4行目からなのですが(A4から)、A列:コード(数字)、B列:勘定科目(文字)、C列:繰越額(数字)、D列:借方額(数字)、E列:貸方額(数字)、F列:残高(数字)、G列:比率(%)となっております。 各シートの構成として、A列は三桁または四桁の数字なのですが、(A4から)A列が三桁の数字の行を選んで、なおかつ、D列とE列が両方とも0で無い行のB列、D列、E列の値を二つのシートそれでれで検索し、別シートにコピーしたいのです。(どちらのシートからでも構いません。A列のコードの値はシート毎ではダブらないので、両方で抽出されたB、D、E列の値が列記できれば良いです。) ただ、2つのシートの列数は決まっておらず、一方のシートの抽出データともう一方のシートの抽出データがダブってコピーされない様に、 したいな、とは思っております。 桁数での検索はLEN関数があるらしいのですが、複数のシートが対象となっており、マクロという機能を使った方が良いのでしょうか? 当方も初心者ゆえ、分かりやすく教えて頂ける方、よろしくお願い致します。

  • エクセルで入力した文字を別シートで検索して・・・

    エクセル初心者です。既にご質問、ご回答がありましたらすみませんがご教授願います。 シート1のA1に入力した文字を シート2の1行目から検索 検索された文字の同列の2行目の数値を シート1のB1に表示させるにはどのようにしたらよろしいでしょうか? また、シート1のA1に入力した文字を シート2のA列から検索 検索された文字の同行のB列の数値を シート1のB1に表示させる場合はどのようにしたらよろしいでしょうか? 説明がヘタでわかりづらいかもしれませんが、2通りのご教授を宜しくお願い致します。

  • excel vba 検索の方法について

    excel vba 検索の方法について sheet1とsheet2があり sheet1のA列に10列(全て8桁の数字)文字が並んでいます。 sheet2のA列には1000列(全て8桁の数字)文字が並んでいます。 sheet1のA列とsheet2のA列で同じ文字がある場合 sheet2のA列の同じ文字の隣のsheet2のB列に◎がつくような vbaが書きたいです。 A列の文字は消したり、文字を変えたりします。 コマンドボタンに書いて、ボタンを押せば B列に◎がつくようにしたいです。 ご教授お願いします。

  • 【VBA】Ifで他シートから検索しコピーする

    Excel vbaについて教えてください。 自分で作成したコードが、うまく動かず悩んでいます。 ●作りたいもの Sheet3のA列にある数字を検索値とし、 Sheet1のA列を検索し、合致する行のB列~最終列までコピーし、 Sheet3のB列から貼付する。 ※Sheet1にある列数(項目数)は不定です ●作成したマクロ Sub test() Dim sh1 As WorkSheet Dim sh2 As WorkSheet Set sh1 = Worksheets("Sheet1") Set sh2 = Worksheets("Sheet3") d = sh2.Range("A1").End(xlDown).Row 'Sheet3検索値のA列のデータの最終行 g = sh1.Range("B1").End(xlToRight).Column 'Sheet1の最終列 k = 2 For i = 2 To d    'Sheet3最終行まで If sh1.Cells( i & "A") = sh2.Cells( 1,"A") Then '条件)Sheet1とSheet3のA列が合致 For j = 2 To g                      'Sheet1の最終列まで sh2.Cells( k , j ) = sh1.Cells( i , j ) 'Sheet1のB行から最終列をコピーしSheet3へ貼付 Next j End If Next End Sub いろいろ直していたのですが、Set sh2 = Worksheets("Sheet3")で「インデックスが有効範囲にありません」(同じブック内に同名シートがあるのに?)とエラーが出たり、 また、B行から最終列までコピーする際の範囲指定についてもよくわからず、 もっと他に良い方法が無いものかとお手上げ状態です。 どうぞ宜しくお願いいたします。

  • エクセルのセルを参照して別シートに張り付ける2

    こんにちは。 エクセルのsheet1とsheet2があり、sheet1のセルに入力されている文字や数値をsheet2にコピーしたいと思っています。(sheet2には値として張り付けたい) <条件> sheet1の3行目から下(3000行目まで)をコピーしてsheet2の2行目から下(3000行目まで)に張り付けたい。 しかし、下記のように列も入れ替えたい。下記以外はコピーしない。 sheet1   sheet2  A  →  A  G  →  B  H  →  I  M  →  G  Q  →  K R+S  →  L  (sheet1のR列とS列の文字を結合したもをsheet2のL列に)  T  →  M  U  →  N このような作業を1回で行うことはできるのでしょうか? よろしくお願いします。

  • VBAマクロで検索をしたい

    VBAマクロで検索をしたい 1つの列に8~11桁の数字がならんでいます。 別シートに検索シートを作り、下4桁(右から4桁)で抽出したすべての数字を出すにはどうしたらいいでしょうか?><; 例)  シート1   A列 1 0001234555 2 12345678  3 3211234555 4 987654321 5 3211234555 6 1111114555 7 12344555 8 あ123い4555  シート2  A列検索  4555 ← 入力   ↓以下が検索される  0001234555  3211234555  3211234555  1111114555  12344555  あ123い4555 ※同じ数字が並ぶ場合もあり、その場合は複数あることを示すため、その個数分出して欲しい。 ※右4桁は数字のみだがそれ以外はひらがな、カタカナが入る場合がある どなたか教えてください><;

  • マクロで別シートの検索と別シートへの転記

    windows7、エクセル2013です。 Sheet1のA列の値を上から順に、Sheet2のA列内を検索し 同じ値が有ればその値を Sheet3のB列の5行目から順番に転記したいです。 Findを使ってうまくできないので Countifを使いましたが、駄目でした。 関数で可能なら関数でもいいのですが、教えていただきたいです。 よろしくお願いします。 Sub 抽出転記() Dim 検索行 Dim 検索値 Dim 答 Dim 入力行 入力行 = 5 For 検索行 = 3 To 200 検査値 = Worksheets("Sheet1").Cells(検索行, 1) If Worksheets("Sheet2").Columns("A").CountIf(検索値) <> 0 Then 答 = 検索値 Worksheets("Sheet3").Cells(入力行, 2) = 答 入力行 = 入力行 + 1 End If Next 検索行 End Sub

  • VBA 特定の行を別シートへコピー・削除

    下記のように、VBAで特定の行を抽出して別シートへコピーし、コピーした行については元リストデータを削除したいです。 具体的には、【出荷sheet】(C列注文番号は、出荷があった時に入力済)へ、注文番号に対応する行を【リストsheet】から抜き出してコピーし、コピー後は、【リストsheet】から該当行を削除したいです。 検索により調べてもうまく合致する回答が見当たらず困っています。 VBAの理解度は未熟ですが、何卒ご教授いただけると幸いです。 【リストsheet】 A列 B列  C列   D列 ・ ・ ・ J列 No. 日付 注文番号  品名 ・ ・ ・ ・ 1  1/1   A111   鉛筆  ・ ・ ・ ・ ←コピー後、削除  2   1/2   B222   ペン  ・ ・ ・ ・ 3    1/5  C555 消しゴム・ ・ ・ ・ ←コピー後、削除  ・ ・   ⇓ 【出荷Sheet】 A列 B列  C列   D列 ・ ・ ・ J列 No. 日付 注文番号  品名 ・ ・ ・ ・ 1  1/1 A111   鉛筆   ・ ・ ・ ・ 3   1/5   C555 消しゴム・ ・ ・ ・

  • 複数のシートから重複するデータを別シートに抜き出す

    こんにちは。 Excel2007です。 複数のシート(現在はSheet1からSheet4ですが、最終的にはSheet10ぐらいまでになります)に蔵書データが入っています。 A列21行目から作者名、B列21行目から本のタイトル、C列21行目からページ数と以下、値段、ISBNなどJ列まで蔵書データが入っています。本棚ごとにSheet1、Sheet2と分かれて入力されています。 この複数のシートから本のタイトルが重複するものを別シートに抜き出すにはどうしたらいいでしょうか? 重複データを削除するマクロや関数は探せたのですが、複数のシートにまたがっている場合は探しきれませんでした。 何かいい解決方法があればご教授下さい。

  • VBAで複数条件検索どうすればよいですか?

    【Sheet1】 発注日   品番    ロットNo      納品日   A     B      C          D 1 3/11  553  111-111-1111   3/17 2 3/11  123  222-222-2222 3 3/11  223  333-333-3333 4 3/12  123  444-444-4444   3/17 5 3/12  553  555-555-5555 【Sheet2】  納品日  品番   ロットNo    A    B     C 1  3/17  553  111-111-1111 2  3/17  123  444-444-4444 3  3/17  223  666-666-6666 エクセル2010・VBAで、【Sheet2】の品番とロットNoの条件に合う行を【Sheet1】より探し、【Sheet1】D列に納品日を入力し、その行のロットNoを明るい緑で塗りつぶす。 【Sheet2】の条件が【Sheet1】にないなら【Sheet2】の行のロットNoを、赤で塗りつぶす。 【Sheet1】は発注リスト、【Sheet2】は納品リストになります。 納品日は検索した日の日付になります。 Findを使い試行錯誤しましたが、思うように動かず、スキル不足で困っています。どなたか、ご教授願います。宜しくお願い致します。

専門家に質問してみよう