先日、マクロで行を自動挿入する投稿をさせていただき
まして無事解決した案件の続きになるのですが・・・><
【行いたいポイント】
①Sheet1の表からSheet2へ行の挿入を自動で行う。
(規格数×カラー数の自動挿入)
→自動挿入は前回解決させていただきました。
ご回答いただきました方々本当にありがとうございました。
②【今回のメイン】今回はマクロで可能であれば皆さまのお力を再度お借りしたい部分です。
下記の現在の状況で自動で添付画像の様に規格数とカラー数が表にまとめられる様な形にしたいと
考えておりますが、関数で処理しようと検討はしているのですが行が増えると関数もずれてしまい
ただやみくもに時間だけが過ぎてしまっている状況です><
【現在の状況】
・Sheet1 の表には規格数が最大10規格内で増加元減するため最小規格と最大規格のみを入力しています。
・現在は規格数に番号を振り最大値から最小値を引いて挿入する行数を求めている状況です。
・カラー数は最大で6カラーまであり表に全て記載できる様にしています。
・先日、カラー挿入数を自動で入れるマクロを投稿にて教えて頂き行は自動で増やせる状況です。
→添付画像にするために元表の変更が必要であれば変更をします。
他力本願的で本当に申し訳ございませんが、頭が限界で投稿させていただきました。
No.2
- 回答日時:
こんにちは
なさりたい事、正しい結果が説明を読んでも、画像を見ても見当が付きません。
もっとも、行いたい事を人に正しく説明できるのなら解決されているのかも知れませんね
>最大値から最小値を引いて挿入する行数を求めている状況です。
120から80を引いて、、なぜ 3なのですか?
10単位で、Sheet2に1行すでにポテト 50 80 赤があるからですか?
12-8,、すでにデータがあるから4-1?
追加補足の緑が上に来るのはすでにあるデータが赤だからですか?
カラー③は何色、、、すべての色、データ数を書いた方が良いかも
3は入力ですか?関数ですか?関数で求めているのなら 数式を示してください。
挿入する位置ですが、、これも不明です。
何故、纏めるSheet2にすでにポテト、、、があるのでしょう?
すでにデータがある下に挿入するのですか?
であるなら、アイテム名は一意の値ですでにあるカラーを参照する必要がありますか?
Sheet1をSheet2にコピーして何だかの法則で表組(データ数)を変えたいと言う事でしょうか。
各色と最大値 最小値の関連性は?
例えば、カラーの入っているセル(最大6)の色で カラー1は1行
カラー2は2行 カラー3は3行、、最大6行挿入するとか、、、
挿入数とカラーの数が合わない時はどのような処理をするのでしょう?
交互に入れると言う事?
正直、補足説明を読んでさらに分からなくなってしまいました。
補足から推察すると3行挿入すると言う事とSheet2にすでにデータがあると言う事が難しくしているような気がします。
例えば、
Sheet2をクリアーして
挿入数を(120-80)/10 として
規格1の値をカラーの数の分保持して各カラーで挿入
規格2を上記と同様に値設定して挿入、、なのかな?
Sheet2にすでにデータがある場合は、一致するデータは出力しないとか
このあたりの処理手順をIF文で書いてみてはいかがでしょう?
パズルみたいなものなので、
関数でなくて通常言語でも、、、状況によってはフローチャートで書くとか
ご質問を質問で返すような形になり、長文で失礼とは存じますが
今一度、ロジックを手書きするなりして整理されてはいかがでしょう。
想像でコードを示しても、データの増減を行う時に上手くいかない可能性が高いでしょうが、
挿入でなくデータを新たに作るのであれば、
下記のような感じかも知れません。(ご質問には該当しませんがすみません)
規格のセルの数、カラーの数でループを決めています。(挿入数は必要ありません)
参考にならないとは思いますが、一応、、、
出力前にWorksheets("Sheet2")はクリアーされるので注意して試してください。
Sub sample()
Dim i As Long, j As Long, n As Long
Dim r As Range
Worksheets("Sheet2").Cells.ClearContents
For Each r In Worksheets("Sheet1").Range("A3", Worksheets("Sheet1").Cells(Rows.Count, "A").End(xlUp))
If r.Value <> "" Then
For i = 1 To Application.CountIf(r.Offset(, 3).Resize(, 2), "<>")
For j = 1 To Application.CountIf(r.Offset(, 5).Resize(, 3), "<>")
With Worksheets("Sheet2")
.Cells(2 + n, 1).Resize(, 3).Value = r.Resize(, 3).Value
.Cells(2 + n, 1).Offset(, 3).Value = r.Offset(, 2 + i).Value
.Cells(2 + n, 1).Offset(, 4).Value = r.Offset(, 4 + j).Value
End With
n = n + 1
Next
Next
End If
Next
End Sub
せっかく見ていただいたにも関わらず拙い投稿力で本当に申し訳ございません!><
にも拘わらず、ご丁寧に補足内容を頂きまして心より感謝申し上げます。
本当にありがとうございます。
補足説明をつけさせていただきました。あつかましいお願いで申し訳ないのですがいま一度ご教授いただければ幸いです。宜しくお願い申し上げます。
No.1
- 回答日時:
添付されている画像を見るとカラー①、②、③・・・⑥まであるのは想像できるのですが、規格①、②で、③以降がどうなっているのか想像できません。
ExcelでVBAを書く場合、セル位置って重要です。それが分かるような画像を貼らないと、有効な回答が付きにくいです。
それから、想定結果が、80赤、80赤、120緑、120緑になっていますが、80赤、80緑、120赤、120緑が正しいような気がします。
この辺もいい加減に書くと回答、付かないですよ!!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
一行おきにコピーするマクロが...
-
エクセル VBA 指定の範囲内をコ...
-
EXCELにて複数列を同条件(色)...
-
Excelの非表示列も含めてコピー
-
【マクロ】IF複数条件の上限に...
-
Excel 自動セル 抽出 別シート...
-
エクセルの関数について(日付で...
-
特定の桁数を抽出
-
エクセルマクロで、現在の時刻...
-
[Excel VBA]空白セル以外に連番...
-
Excel VBAで日にちを入力して線...
-
シート保護の状態で行の追加を...
-
エクセルで反転コピー
-
エクセルで表示された値だけ行...
-
エクセルで行挿入した際、自動...
-
EXCEL 特定の文字より○文字分...
-
EXCELで○ヶ月を○年○ヶ月に変換...
-
エクセルの複数のセルを一括で...
-
Excelで同じセルに箇条書きをし...
-
A1セルに入力したら、入力時間...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
一行おきにコピーするマクロが...
-
EXCELにて複数列を同条件(色)...
-
Excelの非表示列も含めてコピー
-
シート保護の状態で行の追加を...
-
エクセルの関数について(日付で...
-
エクセルで空白以外のセルの値...
-
エクセルで表示された値だけ行...
-
エクセル VBA 指定の範囲内をコ...
-
エクセルで行挿入した際、自動...
-
エクセル マクロ 貼り付け先が...
-
エクセルで反転コピー
-
特定の桁数を抽出
-
[Excel VBA]空白セル以外に連番...
-
エクセルのマクロ、AVERAGEIFを...
-
エクセルVBA 複数列をコピーす...
-
Excel VBAで日にちを入力して線...
-
マクロ初心者です、小数点6桁で...
-
行数が不規則な一週間ごとの合...
-
最終行から上10行をコピーする...
-
エクセルでマクロを使った特定...
おすすめ情報
【追記補足】
1画像を修正をさせていただきました。
2規格に関しては、最大10個まで増加減するので表の見やすさの都合上【規格①】に最小規格値と【規格②】に最大規格値 のみ の現状は表です。(マクロを設定する上で必要で規格を⑩まで増やします。)
【概要】
規格は商品毎に最大10種類あり商品別に選びます。
表の商品(ポテト)は全10種類ある規格の中から①80g②120gの規格2種類を使用しています。(画像に載せていない別表に入力)
各規格のカラーは上限6種類で都度カラー作成し別表入力しています。 【Sheet1】は別表集計をコピペしたものです。現在は手入力で行を増やして【Sheet2】の様に修正しています。【80g×各カラー】【120g×各カラー】
【Sheet2】はイメージ図で実際は同シート内を編集したいと考えています。
【規格×カラー挿入数】は手作業用に規格数とカラー数の個数カウントし行を増やす指標です(フォントは無視してください><
【目的】
Sheet1にコピペされた表をそのままマクロをいれて Sheet2(イメージ図)のような
規格×カラーが表になるようSheet1を修正したいと考えています。
シートが2枚あります。
①【オプションdeta1】サイズ:カラーのみ画像 ②【オプション登録】集計する画像です。
①→②に先日の内容をUPするのが目的理想です。
シートの行タイトル(フォント)について
・赤フォント今回のご相談箇所です。
・黒・青全てコピー対象です。
(青フォントは関数の計算式で結果を表示している意味でフォントを変えています。)
この内容で伝わりますでしょうか?ご面倒をおかけしてばかりで本当に申し訳ございませんが
宜しくお願いいたします。
【オプション登録】画像です。
補足画像:CB列メイン画像