質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.53%

  • Excel

    1517questions

    Excelは、マイクロソフト社が開発しているデータ集計や分析を行う表計算ソフトの一つです。文書作成や表計算、資料作成などの多彩な機能を備えており、統合パッケージであるMicrosoft Officeに含まれています。

  • マクロ

    224questions

    定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

A列に入力した数値順にB列の値を別シートに貼り付けたい

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 108

miyako123

score 3

A列に入力した数値順にB列の値を別シートに貼り付けたいです。

マクロで、複数ある物品の製造番号を転記するための入力シートを作成しています。
納入品リストの中には製造番号があるもの、ないものが混在しているため、
以下の例のように納入品リストを貼り付ける「シートA」から製造番号があるものを抽出して、C列の数量分だけ出力用シート「シートB」に貼り付けたいと考えています。

[シートA]

(A列)並べ替え順 (B列)品名 (C列)数量
物品A
3 物品B 3
物品C
1 物品D 1
物品E
2 物品F 3


[シートB]

(A列)品名 (B列)製造番号
物品D
物品F
物品F
物品F
物品B
物品B
物品B

 試したこと

現在、[シートA]のA列が「1」の場合に、シートBに貼り付ける(A列に「1」があるものをC列の数だけ貼り付ける)ことまではできていますが、数字の並び順となるとどうしたらいいのかわからなくなっています。

 該当のソースコード

Const 設定区分列 As Integer = 1
Const 繰返数列 As Integer = 11
Const 書込開始行 As Integer = 3
Const 製番表 As String = "製番表作成準備"

数量 = Cells(Rows.Count, 11).End(xlUp).Offset(1).Row

書込中行 = 書込開始行    
For i = 1 To 数量
If Cells(i, 設定区分列) = 1 Then
For j = 1 To Cells(i, 繰返数列)
Sheets(製番表).Cells(書込中行, 2) = Cells(i, 2)
書込中行 = 書込中行 + 1
Next j
End If
Next i

 補足情報(FW/ツールのバージョンなど)

EXCEL2010

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

+1

今のコードを活かすのであれば、A列の並べ替え順を1から順次検索する処理を追加すれば簡単かと思います。
以下はサンプルですが動作未確認です。

Const 設定区分列 As Integer = 1
Const 繰返数列 As Integer = 11
Const 書込開始行 As Integer = 3
Const 製番表 As String = "製番表作成準備"

Dim 並べ替え順 As Integer
Dim 並べ替え順最大値 As Integer

数量 = Cells(Rows.Count, 11).End(xlUp).Offset(1).Row

書込中行 = 書込開始行    
並べ替え順最大値 = Application.WorksheetFunction.Max("A:A")

For 並べ替え順=1 To 並べ替え順最大値
    For i = 1 To 数量
        If Cells(i, 設定区分列) = 並べ替え順 Then
            For j = 1 To Cells(i, 繰返数列)
                Sheets(製番表).Cells(書込中行, 2) = Cells(i, 2)
                書込中行 = 書込中行 + 1
            Next j
        End If
    Next i
Next


ただし毎回先頭行から見に行くので遅いかもしれません。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/07/17 11:14

    早速の回答ありがとうございました!
    ただ、実行したところ、エラーが発生してしまいましたので、ご報告させていただきます・・・
    [エラーメッセージ]
    実行時エラー'1004'
    WorksheetFuntionクラスのMaxプロパティを取得できません。

    以上です。
    よろしくお願いします。

    キャンセル

  • 2018/07/17 11:19

    コピペミスでしょうか。
    ×WorksheetFuntion
    ○WorksheetFunction

    キャンセル

  • 2018/07/17 11:39

    エラーメッセージの打ち間違いで、マクロ自体は

    並べ替え順最大値 = Application.WorksheetFunction.Max("A:A")

    と記載しているので、コピペミスではないようです。

    キャンセル

  • 2018/07/17 11:42

    並べ替え順最大値 = Application.WorksheetFunction.Max("A:A")
    の、()内を
    Max(Range("A:A"))
    と書き換えたところ、無事に動きました!

    勉強になりました、ありがとうございました!

    キャンセル

  • 2018/07/17 11:43

    え、なんでだろ。
    Applicationから順次打ち込んでいって、Function.まで打ったときにMaxって一覧にないでしょうか?
    Excel2010は対応しているはずなんだけど。

    もしこの方法が解決しない場合、以下でも対処できますので。
    ・別の方法で最大値を求める
    ・最大値がわかっているなら固定値にする
    ・とりあえず無駄にループがまわるが1000とか大きい値にしておく

    キャンセル

  • 2018/07/17 11:44

    あ、それか・・・。Range("A:A")
    すみません、中途半端な回答で。

    キャンセル

  • 2018/07/17 11:50 編集

    いえいえ!
    瑣末なことです!
    本当にありがとうございました!
    またご縁がありましたら、よろしくお願いします♪

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.53%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • Excel

    1517questions

    Excelは、マイクロソフト社が開発しているデータ集計や分析を行う表計算ソフトの一つです。文書作成や表計算、資料作成などの多彩な機能を備えており、統合パッケージであるMicrosoft Officeに含まれています。

  • マクロ

    224questions

    定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。