• 締切済み

エクセルで作業を簡単にしたい

一つのエクセルの中で完結させたいです。 シート1には、B列に番号があります。 シート2のF列には、シート1のB列に対応した番号があります。 対応した番号のシート2のCD列の情報をシート3のDE 列に返す処理を作成したいです。シート3のDE列の結果が3行目まで埋まれば、FG列に結果を返すようにしたいです。 シート1とシート3は固定で、シート2の情報が毎回変わるので、シート2の情報を毎回コピペで貼り付けたら、シート3が自動で完成する形にしたいです。 説明が下手くそですいませんm(__)m よろしくお願い致します。

みんなの回答

  • bunjii
  • ベストアンサー率43% (3589/8248)
回答No.7

回答No.5の追加です。 少々面倒ですが関数でも添付画像のような処理ができます。 Sheet3のC列のコード単位に数式が異なります。 また、品名と数の数式でも参照セルの割り出しが異なるので列方向のコピーは2列をセットでコピーすることになります。 数式の詳細については要望があれば提示します。

  • HohoPapa
  • ベストアンサー率65% (454/691)
回答No.6

添付画像を例に、次のようなコードでいかがでしょうか。 なお、2行で賄える行があった場合は、3行目は空行にしています。 また、シート1にあってシート2にない場合は 空行が3行挿入されます。 もう少し具体的で、バリエーションのあるサンプルを提示しないと、 相手には期待することが伝わらないですよ。 更に、今後は、挑戦したコードを掲示し、 躓いているところを説明したほうがいいと思います。 Option Explicit Sub Sample()  Dim wsGet1 As Worksheet  Dim wsGet2 As Worksheet  Dim wsPut3 As Worksheet  Dim RowCounter As Long  Dim PutCol As Long  Dim PutRow As Long  Dim GetRow As Long  Dim GetCode As Long  Dim HitCount As Long  Dim tgRange As Range    With ThisWorkbook   Set wsGet1 = .Sheets(1)   Set wsGet2 = .Sheets(2)   Set wsPut3 = .Sheets(3)  End With    RowCounter = 2    Do   If wsGet1.Cells(RowCounter, 1).Value = "" Then Exit Sub   GetCode = wsGet1.Cells(RowCounter, 1).Value   GetRow = 2   HitCount = 0   Set tgRange = wsPut3.Cells((RowCounter - 1) * 3 - 1, 1)      Do    If wsGet2.Cells(GetRow, 6).Value = "" Then Exit Do    If wsGet2.Cells(GetRow, 6).Value = GetCode Then     HitCount = HitCount + 1     PutRow = ((HitCount - 1) Mod 3)     PutCol = Int((HitCount - 1) / 3) * 2     tgRange.Offset(PutRow, PutCol).Value = wsGet2.Cells(GetRow, 3).Value     tgRange.Offset(PutRow, PutCol + 1).Value = wsGet2.Cells(GetRow, 4).Value    End If    GetRow = GetRow + 1   Loop      RowCounter = RowCounter + 1  Loop End Sub

  • bunjii
  • ベストアンサー率43% (3589/8248)
回答No.5

>VBAで考えております。 此処へ質問される方の多くは回答されたコードを理解せずに流用しているようです。 処理内容が変更になったとき自分で修正できないとまた質問するケースがあります。 あなたの場合はどの程度のレベルですか? VBAの基礎知識程度では対応困難かと思います。 また、プログラマーとしての資質が無いと効率の良いプログラムが書けません。 取敢えず、フローチャートを書いてみることをお薦めします。 >他に不足な情報あれば教えて下さい。 模擬データと結果のデータが少なすぎで目的の処理の全容が読み取れません。 つまり、あなたの要望事項の大部分が隠されていると言うことです。

  • okok456
  • ベストアンサー率43% (2567/5925)
回答No.4

Sheet1とSheet2との関係は理解できませが Sheet2のセルC1に「みかん」と入力すると sheet3のセルD1にも「みかん」と表示させれば良いのなら sheet3のセルD1に「=Sheet2!C1」入力します。 他のsheet3のセルにD2、D3、E1、E2、E3にはsheet3のセルD1をコピーし貼り付け F1には「=Sheet2!C4」、G1には「=Sheet2!D4」と入力です。

  • kichi8000
  • ベストアンサー率41% (658/1581)
回答No.3

「番号」とありますが、その番号はどういう性質のものなのかくらいは、文章がヘタでもわかるでしょう? 配置コーナーなのか、レジなのか、店舗なのか、バイトナンバーなのか。 シートBは品物が重複するのかしないのか。 枠が9行あるけど、9件しかないのか、そうではないのか。

  • msMike
  • ベストアンサー率20% (363/1775)
回答No.2

「シート2のCD列の情報をシート3のDE列に返す処理を作成したい」の文章の意味が分かるのみで、各シート間の説明が支離滅裂です。 説明文ではシート1、2、3だけど、添付図ではシートA、B、Cにナッチョルし。

  • bunjii
  • ベストアンサー率43% (3589/8248)
回答No.1

>一つのエクセルの中で完結させたいです。 「1つのエクセルBook(1つのファイル)で」と言うことでしょうか? >シート3のDE列の結果が3行目まで埋まれば、FG列に結果を返すようにしたいです。 Excelの関数はセルに設定したとき計算結果をセルの値に代入する仕組みなので上記のような処理はVBA(マクロ)で処理することになると思います。 しかし、条件分岐の手法でシート3のDE、FG、HI等の其々3行に数式を設定すれば該当なしのときに文字数0の文字列を代入することで同等の結果が得られると思います。 >シート1とシート3は固定で、 シート1のA列には固定の値が入力されているのでしょうか?、それとも、シート2のF列から取り込むのでしょうか? >シート3が自動で完成する形にしたいです。 シート1は作業用の役割でしょうか? 情報が不足していますので検証が困難です。 回答するには動作を検証しなければなりませんので上記の不明な点を追加説明してください。

popo298
質問者

補足

お返事ありがとうございます。 初めての利用でよく分かっておらずすいません。 はい、一つのファイルです。 VBAで考えております。その類のカテゴリーがあったのですかね?すいませんm(__)m シート1には固定の値が初めから入っております。 シート1が作業用の役割です。 他に不足な情報あれば教えて下さい。 よろしくお願いします。

関連するQ&A

  • エクセルVBAのコードの書き方を教えてください

    エクセルVBAの初心者です。 下記①-⑲のようなコードを書きたいのですが、どなたかお分かりになる方がいましたら、 ご教示いただけますと幸いです。 ① オートフィルターでシート[list]のA列に"●"がある特定の行だけを以下作業の対象にしたい ② ①で特定した行のE列セルの値を、シート[output]のB9セルにコピペする ③ ①で特定した行のF列セルの値を、シート[output]のB12セルにコピペする ④ ①で特定した行のG列セルの値を、シート[output]のB15セルにコピペする ⑤ ①で特定した行のH列セルの値を、シート[output]のB18セルにコピペする ⑥ ①で特定した行のI列セルの値を、シート[output]のB21セルにコピペする ⑦ ①で特定した行のJ列セルの値を、シート[output]のB24セルにコピペする ⑧ ①で特定した行のK列セルの値を、シート[output]のB27セルにコピペする ⑨ ①で特定した行のL列セルの値を、シート[output]のB30セルにコピペする ⑩ ①で特定した行のM列セルの値を、シート[output]のB33セルにコピペする ⑪ ①で特定した行のN列セルの値を、シート[output]のB36セルにコピペする ⑫ ①で特定した行のO列セルの値を、シート[output]のB39セルにコピペする ⑬ ①で特定した行のP列セルの値を、シート[output]のB42セルにコピペする ⑭ ①で特定した行のQ列セルの値を、シート[output]のB45セルにコピペする ⑮ ①で特定した行のR列セルの値を、シート[output]のB48セルにコピペする ⑯ ①で特定した行のS列セルの値を、シート[output]のB51セルにコピペする ⑰ ①で特定した行のT列セルの値を、シート[output]のB54セルにコピペする ⑱ ①で特定した行のU列セルの値を、シート[output]のB57セルにコピペする ⑲ シート[output]のB3:B59をテキストファイルを呼び出してコピペする ※このとき、上記②-⑱で記述したB9からB57のセルには改行が含まれる場合が  あるため、テキストファイルへのペースト時に""が表示されてしまうが、  もし可能であれば、この""が表示されないようにしたい。

  • この作業をエクセルで出来ますか?

     お世話になります。  エクセル初心者ですが。エクセルの操作で教えてください。  1行にH列まで入力されているデータが500件ほどあり、A列を15行ごとに結合させたセルに順番に番号をつけて、H列まで数個の列(例えばB,E,G列など、複写する数個の列は全データで変更なし。)を選択して、別シートの書式にA列の番号で選択複写することは可能でしょうか。        可能であればその方法を教えてください。  よろしくお願いします。

  • エクセルで照合したデータのコピペ

    照合したエクセルデータ結果を別シートにコピペする方法を教えてくだ さい。 【設問】 エクセル1には A列に電話番号が100件入っています。 エクセル2には A列に電話番号が100件B列に住所が100件 入っています。 電話番号の 内容は一緒ですが、エクセル1と2では並び方が違います。 VLOOKUP関数を使って、エクセル1の電話番号に対応する住所情報を記 入しました。 私用した関数は下記の通りです。 =IFERROR(VLOOKUP(A1,[Book2.xlsx]Sheet1!A:B,2,FALSE),"該当なし") その住所情報を別のエクセルシート3にコピペする方法を教えてくださ い。

  • エクセルでフィルター実行時の重複データの処理

    お世話になっております。 単純な事なのですが、最近使用頻度が増加して毎回手間をかけている作業を解消したいのです。 2000行程度の表のB列に氏名、C列以降に個人データが入っているようなシートがあります。 目的に応じて色んな列でフィルターをかけて、最終的にはB列の名前だけを重複を避けた形で別のシートに張り付けたいのです。 これまでは毎回フィルター結果を別のシートのB列にコピペしてA列にIF(B1=B2,0,1)でA列で「1」でフィルターをかけて目的の氏名だけコピペしていたのですが、元のシートのまま1回で名前の重複を避けて表示できないかと色々考えたのですが現行の方法よりも手間がかかるのでギブアップです。 B列の名前の重複を避けて抽出する簡単な方法は無いでしょうか? 説明が分かりにくくて済みませんがよろしくお願いします。

  • Excel 2007 vlookupについて

    Excel 2007 vlookupについて 同じシートでA列とB列の2列にある型番で一致するものをC列に表示させたいです。 実際A列の型番は一意の番号です。 B列の型番は同じ番号がございます。 型番1は100行ぐらい。 型番2は300行ぐらい。 C列にどのようなvlookupを記載すればよろしいでしょうか。 ※C2以降に結果が表示されるようにしたいです。

  • エクセルVBAで2つの条件が一致すれば結果を転記

    エクセルVBAの書き方を教えてください。 以下3つのエクセルファイルがあります。 ・F依頼(使うSheet:ナンバリング ・F結果(使うSheet:OKリスト ・F回答(使うSheet: F結果の「OKリスト」シートのA列3行目に結果が入っています。     A列         B列     C列 3行目 OK(結果)    12345678    9012 F依頼の「ナンバリング」シートには、過去からの番号が書き続けられています。     A列      B列     C列     D列 2行目 日付    12345678    9012    OK(結果) OKリストのB&Cの12桁をナンバリングシートのB&Cから検索し 一致するものがあれば、ナンバリングシートのD列(結果)にOKリストのA列(結果)を 貼り付けたいです。

  • Excelのハイパーリンクについて

    下記の様なリンクを作りたいです。 2つのシートにそれぞれ表を用意しています。 シート1      A列   |  B列  |  C列  |・・・・ 1行|       |  5/20 |  5/21  |・・・・ 2行|  名前A  |  123  |      |・・・・ 3行|  名前B  |     |  234  |・・・・             :             :             : シート2に     A列   |  B列    |C列 1行|名前A   |  5/20    |123  ←ここの値は何でも良い(分かり易くするために123にしました) : : : と入っています。(実際はもっと沢山の情報があります) シート2のC列の値をハイパーリンクにして クリックされたら シート1のA列の値=シート2のA列の値 シート1の1行目の値=シート2のB列の値 で シート1のB2に飛びたいです。 この様な式を作りたいです。

  • エクセル関数を使った集計

    添付ファイルの様に、エクセルのsheet1と2に同様の表があります。sheet1に於いて A列が四角になっているC列の番号と同じ番号を、sheet2のC列を検索し、 その中で、B列がSになっている件数と、その行のD列の合計を求める 関数式を教えて下さい。(実際の表自体は3000行ぐらいあります) 例で求めたい結果は 件数=2件、合計=11,000- になります。 以上宜しくお願いします。

  • エクセルで照合に適切な関数を教えてください。

    すっごく困っているのでよろしくお願いします。 sheet1・・・Aの情報  sheet2・・・Bの情報 sheet3・・・二つの照合結果 A・Bはそれぞれ入力件数、並び順(行・列)もまったく違います。 例) sheet1・sheet2  A列・・・都道府県  B列・・・市区  C列・・・町 件数は同じ東京都○○区でもC列の町名が違った場合は、複数件になります。

  • excelで別シートのセルを選択(VBA)

    どなたか教えてください。 シートXのB1に行番号 シートXのB2に列番号 が記載されていたとして、 別シート(Y)の、上記で指定したセルを選択する(フォーカスを移動する方法)を教えてください。 シート(X)   A   B   C  1 行  25  2 列  2  シート(Y)   A   B   C  1 2   ::::::: 24 25   (ここ) 以下のように書いても、最後の行でエラーになってしまいます。  行番号 = Sheets("X").Cells(1, 2).Value  列番号 = Sheets("X").Cells(2, 2).Value  Sheets("Y").Select  Range(Cells(行番号, 列番号)).Select

専門家に質問してみよう