No.8ベストアンサー
- 回答日時:
No5です。
No5には、ミスがありました。すみません。
以下、訂正しておきます。(No5は無視してください)
Sub Q12810913()
Dim DR As Range, v
Dim rw As Long, col As Long
Const SourceRange = "A1:Q17" '←元の表の範囲
Const DestRange = "A21" '←出力先セル位置(左上セル)
Set DR = Range(DestRange).Resize(1, 10)
With Range(SourceRange)
For rw = 2 To .Rows.Count
If .Cells(rw, 1) <> "" And .Cells(rw + 1, 1) <> "" Then
DR(1).Value = .Cells(rw, 1).Value
DR(2).Resize(, 2).Value = .Cells(rw + 1, 1).Resize(, 2).Value
DR(4).Value = .Cells(rw, 3).Value
v = DR(1).Resize(, 6).Value
End If
If .Cells(rw, 4) <> "" Then
v(1, 5) = .Cells(rw, 4).Value
v(1, 6) = .Cells(rw, 5).Value
End If
For col = 6 To .Columns.Count Step 4
If WorksheetFunction.CountBlank(.Cells(rw, col).Resize(, 4)) < 4 Then
DR(1).Resize(, 6).Value = v
DR(7).Resize(, 4).Value = .Cells(rw, col).Resize(, 4).Value
Set DR = DR.Offset(1)
End If
Next col
Next rw
End With
End Sub
No.6
- 回答日時:
以下のマクロを標準モジュールに登録してください。
Shee2の2行目以降を設定します。1行目は設定しません。
各列の書式設定はあなたのほうで適切に行ってください。
特に時刻、総数量、予定数などです。
---------------------------------------------
Option Explicit
Sub 複数列転記()
Dim sh1 As Worksheet
Dim sh2 As Worksheet
Dim lastRow As Long 'Sheet1 最終行
Dim row1 As Long 'Sheet1 処理行
Dim row2 As Long 'Sheet2 処理行
Dim wcol As Long 'Sheet2 処理列
Dim Pno1 As String '部番1
Dim Pno2 As String '部番2
Dim Pcolor As String '色
Dim Ddate As Variant '納期
Dim Dtime As Variant '時間
Dim Total As Variant '総数量
Dim mode As Long 'モード 0:部番待ち 1:各個口処理中
Dim i As Long
Set sh1 = Worksheets("Sheet1")
Set sh2 = Worksheets("Sheet2")
'Sheet1の最終行取得
lastRow = sh1.Cells(1, 1).SpecialCells(xlLastCell).row
sh2.Rows("2:" & Rows.Count).ClearContents 'Sheet2をクリア
mode = 0
row2 = 2
For row1 = 2 To lastRow
If mode = 0 Then
If sh1.Cells(row1, "A").Value = "" Then GoTo NEXT99:
Ddate = sh1.Cells(row1, "C").Value '納期
Pno1 = sh1.Cells(row1, "A").Value '部番1
Pno2 = sh1.Cells(row1 + 1, "A").Value '部番2
Pcolor = sh1.Cells(row1 + 1, "B").Value '部品色
Dtime = sh1.Cells(row1 + 1, "D").Value '納期
Total = sh1.Cells(row1 + 1, "E").Value '総数量
If Ddate = "" Then
MsgBox (row1 & "行目の納期が空白")
Exit Sub
End If
If Pno2 = "" Then
MsgBox (row1 + 1 & "行目の部番が空白")
Exit Sub
End If
If Pcolor = "" Then
MsgBox (row1 + 1 & "行目の部品色が空白")
Exit Sub
End If
If Dtime = "" Then
MsgBox (row1 + 1 & "行目の時間が空白")
Exit Sub
End If
If Total = "" Then
MsgBox (row1 + 1 & "行目の総数量が空白")
Exit Sub
End If
'モードを変更し、次の行へ
mode = 1
GoTo NEXT99
End If
If mode = 1 Then
If sh1.Cells(row1, "F").Value = "" Then
'当該部番は終了と判定し、次の部番の出現を待つ
mode = 0
GoTo NEXT99
End If
'時刻と総数量が切り代わりを反映
If sh1.Cells(row1, "D").Value <> "" Then
Dtime = sh1.Cells(row1, "D").Value
Total = sh1.Cells(row1, "E").Value
End If
'個口処理を3回繰り返す
For i = 0 To 2
wcol = 6 + i * 4
If sh1.Cells(row1, wcol).Value = "" Then Exit For
sh2.Cells(row2, "A").Value = Pno1 '部番1
sh2.Cells(row2, "B").Value = Pno2 '部番2
sh2.Cells(row2, "C").Value = Pcolor '部品色
sh2.Cells(row2, "D").Value = Ddate '納期注番
sh2.Cells(row2, "E").Value = Dtime '時刻
sh2.Cells(row2, "F").Value = Total '総数量
sh2.Cells(row2, "G").Value = sh1.Cells(row1, wcol).Value '個口
sh2.Cells(row2, "H").Value = sh1.Cells(row1, wcol + 1).Value '空欄
sh2.Cells(row2, "I").Value = sh1.Cells(row1, wcol + 2).Value '予定数
sh2.Cells(row2, "J").Value = sh1.Cells(row1, wcol + 3).Value '連番
row2 = row2 + 1
Next
End If
NEXT99:
Next
MsgBox ("完了")
End Sub
tatsumaru77 様
御回答ありがとうございます。
VBAに関して記述ありがとうございます。
後程検証させて頂きます。
先ずはお礼申し上げます
No.5
- 回答日時:
こんにちは
関数でも不可能ではないと思いますが、相当に面倒なので、VBAにしてみました。
画像が良く見えないのと、変換のルールの説明がないので、勝手に解釈しています。
※ ご提示の元の表が記載ルールに合致しているものと仮定して、チェックは一切省いています。
※ おかしなデータが紛れ込む可能性がある場合は、チェックを追加するようにしてください。
※ 私の解釈がおかしなせいか、ご提示の結果とは最後の8行分の「時間」の表示が異なります。
(どういうルールなのか理解できないので、そのままにしてあります)
以下は、とりあえず質問文に添付の表のままを対象とするようにしてありますが、
・対象の表の範囲
・出力先の位置
を変えれば、その内容に従って処理します。
ご参考にでもなれば。
Sub Q12810913()
Dim DR As Range, v
Dim rw As Long, col As Long
Const SourceRange = "A1:Q17" '←元の表の範囲
Const DestRange = "A21" '←出力先セル位置(左上セル)
Set DR = Range(DestRange).Resize(1, 10)
With Range(SourceRange)
For rw = 2 To .Rows.Count
If .Cells(rw, 1) <> "" And .Cells(rw + 1, 1) <> "" Then
DR(1).Value = .Cells(rw, 1).Value
DR(2).Resize(, 2).Value = .Cells(rw + 1, 1).Resize(, 2).Value
DR(4).Value = .Cells(rw, 3).Value
End If
If .Cells(rw, 4) <> "" Then
DR(5).Resize(, 2).Value = .Cells(rw, 4).Resize(, 2).Value
v = DR(1).Resize(, 6).Value
End If
For col = 6 To .Columns.Count Step 4
If WorksheetFunction.CountBlank(.Cells(rw, col).Resize(, 4)) < 4 Then
DR(1).Resize(, 6).Value = v
DR(7).Resize(, 4).Value = .Cells(rw, col).Resize(, 4).Value
Set DR = DR.Offset(1)
End If
Next col
Next rw
End With
End Sub
fujillin 様
御回答ありがとうございます。
最後の8行分の「時間」の表示ですが、私の記入ミスでした。
申し訳ございません。
正しくは 12:00 です。
VBAに関して記述ありがとうございます。
後程検証させて頂きます。
先ずはお礼申し上げます
No.3
- 回答日時:
#2様。
A~Q列って拡大版の方で読み取れると思えます(老眼ジジィですが)。
『総数量』~『連番』をF列以降繰り返しているのでしょう。
なので5列1組と思われます。(老眼なので違ったらごめんなさい。)
あとはどこで最終行を取得可能か次第でしょうか?
シート名は任意で修正してもらいあとは見かけ上同じような物は作れるでしょうけど、スマホでVBAをデバッグなし且つコードの綴りミスなしとは
ちょっと厳しいので応援しております。
PS.
画像拡大については運営側に要望は出しております。
一応その方向で検討はして貰えそうですが、いつ対応できるかは今の状況では厳しいかもですね。
No.2
- 回答日時:
補足要求です。
1.拡大版1の図の1行目の見出しですが、
A列~Q列まで、何と書いてありますか。各列ごとに提示してください。
2.拡大版2の図についてです。
セルの具体的な位置がわかりません。
①一番左の列はA列ですか。
②部番の見出しがあるセルは1列目ですか。
3.拡大版1のシートのシート名は何でしょうか。
4.拡大版2のシートのシート名は何でしょうか。
tatsumaru77 様
ご質問ありがとうございます。
補足不足で申し訳ございません。
補足回答させていただきました。
宜しくお願い致します。
No.1
- 回答日時:
画像が不鮮明なのでわからない
拡大できる知恵袋とかが宜しいのではないかな?
パワクエはそんな空白セルばかりのものは扱えない気がします
ただし未経験です
あとは画像任せではなく、求める仕様を箇条書きでも書いて説明する事かな?
各列の行関係は左側を基準としたら、すべて同じになるのかどうか
その他としては順列?みたいに、どこかの列以降は纒められていてそれを総組み合わせする感じに思えるけど、そこがよく見えないし
御回答ありがとうございます。
アドバイス頂いた通り、知恵袋での御相談もしてみようと思います。
詳細も出来るだけ記述してみようと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) VBA 特定の単語以外が含まれる行全体を削除したい 2 2021/11/03 18:55
- Excel(エクセル) Excelの並び替え(先頭の文字以外を基準に並び替えたい) 3 2023/07/07 22:21
- Visual Basic(VBA) 【関数orVBA】カーソルのある行を黄色にし、A列の値を別シートに表示できますか? 4 2021/12/28 00:03
- Access(アクセス) accessでexcelデータを一部変換してインポートするVBAコードを教えてください。 2 2021/12/14 08:31
- Excel(エクセル) Power Query でのデータの一括修正について 2 2022/05/10 02:00
- Excel(エクセル) Excelで、行に複数の数字が入力されているセルが複数の列存在し、行を跨いでセル内の数値を並び替える 5 2022/06/17 18:03
- Visual Basic(VBA) 【Excel VBA】表の列の値毎に分割するには?(値がブックのファイル名) 9 2021/11/16 18:25
- Visual Basic(VBA) Excel VBAで並べ替えをしたい 3 2023/02/25 09:31
- その他(Microsoft Office) 1の行を固定した上でVBAを用いて日付順に自動並べ替え 2 2022/06/06 15:09
- Excel(エクセル) IF文の管理を簡単にしたい 4 2021/11/07 11:23
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
全然わからないので質問する資...
-
返信の続きはありますか
-
「対処」と「対応」の違いにつ...
-
「不快な思いをさせてしまい、...
-
PS2のプログレッシブ対応ソフト...
-
MP3gainがつかえません・・・ M...
-
「未対応」、「非対応」はどち...
-
Wordの拡張子について Wordの拡...
-
WPA2セキュリティーのWi-Fiに対...
-
市役所って12時台でも対応して...
-
個別具体的
-
「先に言ってくれれば良かった...
-
PC windows版「同級生」(「同級...
-
ブラウザの拡大縮小によるレイ...
-
Accessでテキスト型→数値型への...
-
「を対応する」と「に対応する...
-
柔軟の対義語は?
-
謝罪の対応について。 先日、彼...
-
潜在覚醒について
-
TrueImage2013はWin10未対応と...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「対処」と「対応」の違いにつ...
-
「未対応」、「非対応」はどち...
-
「を対応する」と「に対応する...
-
「先に言ってくれれば良かった...
-
PS2のプログレッシブ対応ソフト...
-
PS5 グレイヒル インシデント欧...
-
市役所って12時台でも対応して...
-
個別具体的
-
綺麗で優しい人は、意地悪な人...
-
MP3gainがつかえません・・・ M...
-
毎月10日『いのちの電話』の相...
-
BBSのRS322はビッグキャリパー...
-
WPA2セキュリティーのWi-Fiに対...
-
Pixel 7aの対応コーデックにつ...
-
リーフの「痕-きずあと-」をプ...
-
謝罪の対応について。 先日、彼...
-
柔軟の対義語は?
-
USB4.0搭載のノートPCについて ...
-
PC windows版「同級生」(「同級...
-
Accessでテキスト型→数値型への...
おすすめ情報
拡大版1
拡大版2
tatsumaru77 様
回答ありがとうございます。
1.拡大版1の図の1行目の見出しですが、
A列~Q列まで、何と書いてありますか。各列ごとに提示してください。
【回答】
A:部番,B:部品色,C:納期,D:時間,E:総数量,F:個口,G:空白,H:予定数,I:連番,J:個口,K:空白
,L:予定数,M:連番,N:個口,O:空白,P:予定数,Q:連番
2.拡大版2の図についてです。
セルの具体的な位置がわかりません。
①一番左の列はA列ですか。
【回答】 A列です
②部番の見出しがあるセルは1列目ですか
【回答】 1列目です
3.拡大版1のシートのシート名は何でしょうか。
【回答】 Sheet1 です
4.拡大版2のシートのシート名は何でしょうか。
【回答】 Sheet2 です
宜しくお願い致します。
以上