• 締切済み

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

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

みんなの回答

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

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

すると、全ての回答が全文表示されます。
  • HohoPapa
  • ベストアンサー率65% (455/693)
回答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/8249)
回答No.5

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

すると、全ての回答が全文表示されます。
  • okok456
  • ベストアンサー率43% (2806/6475)
回答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% (660/1584)
回答No.3

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

すると、全ての回答が全文表示されます。
  • msMike
  • ベストアンサー率20% (371/1817)
回答No.2

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

すると、全ての回答が全文表示されます。
  • bunjii
  • ベストアンサー率43% (3589/8249)
回答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