
同じ内容で何度も、まだ解決していないので、すみません。教えて下さい!
列と行の名前(同じ名前含む)が交差するセルに、データを入力したい。
1)表1、B列5行目以降の名前とD列2行目以降の列の名前が交差するセルに
表3、結果(やりたい結果)のように、日付と名前と数量のデータを入力したいので、
2)VBAプログラムを作成し実行するのですが、表2、結果となります。
【質問】
以下の①②が上手く行きませんので、どなたか教えて頂けないでしょうか!
VBA初心者ですので、宜しくお願いします。
又は、他の手法のプログラムで良い方法が有りましたら、ご指導お願いします。
① 行の名前が複数ある場合、すべての名前に入力したいが、1つの名前のみ入力となる。
(列の名前は1つの名前のみです。)行の同じ名前が交差するセルの記述方法を教えて下さい。
② 行に名前(メロン)が有るのですが、列に名前が無い場合は、記入無しにしたいが、
入力してしまう。入力しない記述方法を教えて下さい。
③実際のデータでは、行の名前等は5/31まで、列の名前も他に追加ありますが、
画像データは行/列とも、省略しています。
Sub Testクロス()
Dim i, k, TgRow, TgCol As Long
MaxRow = Cells(Rows.Count, 2).End(xlUp).Row '検索値最終行
MaxCol = Cells(2, Columns.Count).End(xlToLeft).Column 'シート「DATA」の最終列を取得
'データ削除
If MaxRow > 5 Then
Range(Cells(6, "D"), Cells(MaxRow, MaxCol + 3)).ClearContents
End If
For Each k In Range("B6:B" & MaxRow)
For i = 6 To MaxRow
If Cells(i, 2) = k Then
TgRow = i
Exit For
End If
Next i
For i = 4 To MaxCol
If Cells(2, i) = k Then
TgCol = i
Exit For
End If
Next i
Cells(TgRow, TgCol).Value = k.Offset(0, -1).Value
Cells(TgRow, TgCol).Offset(0, 3).Value = k.Value
Cells(TgRow, TgCol).Offset(0, 1).Value = k.Offset(0, 1).Value
Next k
End Sub

No.1ベストアンサー
- 回答日時:
こんばんは
画像がよく見えないので、はっきりとはわかりませんけれど、こんなことでしょうか?
Sub Q13014030()
Dim rw As Long, rg As Range, f As Range
Set rg = Range(Cells(2, 4), Cells(2, Columns.Count).End(xlToLeft))
For rw = 6 To Cells(Rows.Count, 2).End(xlUp).Row
Cells(rw, 4).Resize(, rg.Count + 3).ClearContents
Set f = rg.Find(Cells(rw, 2).Value)
If Not f Is Nothing Then
Cells(rw, f.Column).Value = Cells(rw, 1).Value
Cells(rw, f.Column + 1).Value = Cells(rw, 3).Value
Cells(rw, f.Column + 3).Value = Cells(rw, 2).Value
End If
Next rw
End Sub
No.2
- 回答日時:
こんばんは
① Next i の位置がおかしい
② 処理されないように分岐すれば良いかと Next iの位置で解消できます
べたな処理で先ずはロジックを考えてみては?
一例
Sub Testクロス()
Dim i As Long, MaxRow As Long, MaxCol As Long
Dim k As Range
MaxRow = Cells(Rows.Count, 2).End(xlUp).Row '検索値最終行
MaxCol = Cells(2, Columns.Count).End(xlToLeft).Column 'シート「DATA」の最終列を取得
'データ削除
If MaxRow > 5 Then
Range(Cells(6, "D"), Cells(MaxRow, MaxCol + 3)).ClearContents
End If
For i = 4 To MaxCol Step 4 '結合セル
For Each k In Range("B6:B" & MaxRow)
If Cells(2, i) = k Then
With Cells(k.Row, i)
.Value = k.Offset(0, -1).Value
.Offset(0, 1).Value = k.Offset(0, 1).Value
.Offset(0, 3).Value = k.Value
End With
End If
Next k
Next i
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 列と行の名前(重複あり)が交差するセルに、データを入力したい 3 2022/06/12 11:17
- Visual Basic(VBA) 【VBA】特定のワードが入っている行全体を塗りつぶしたい 4 2022/04/20 15:22
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) VBA処理追加 こちらでご教示頂いたのですが回答完了させてしまいましたのでこちらからまた質問させてく 2 2022/10/27 09:57
- Visual Basic(VBA) エラーコード1004 6 2022/06/09 14:12
- Excel(エクセル) VBAの指示の内容 昨日こちらでご教示頂いたのですが初心者な為、一つ一つの指示が何をやっているのかわ 2 2022/10/25 18:08
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- Visual Basic(VBA) VBAコードが作動せず、どこに問題があるのか教えて下さい。 3 2023/06/13 13:20
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelで並び替え後にア行...
-
【マクロ】並び替えの範囲が、...
-
Excel2017 フィルタ昇順並びがA...
-
EXCELで日付を比べ3か月以内の...
-
基準日以前のデータを範囲を指...
-
S20.5.3を分解するには(エク...
-
excel / ピポッド 日数を出したい
-
【Excel VBA】指定した行の最大...
-
エクセルの空白セルに書式設定...
-
EXCELの関数で大なり記号を複数...
-
EXCELでデータ並べ替えにの時、...
-
エクセルで日付の後に違う日付...
-
プルダウンに【なし、平均、デ...
-
エクセル VBA 行間隔を飛ばした...
-
オートフィルタ後のデータから...
-
エクセルで行の高さ及び列幅の...
-
行一括削除を早く行う、こんな...
-
エクセルで文字が白くなる
-
エクセルの主軸と第2軸の0を合...
-
エクセルで文字を含む式に、カ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel2017 フィルタ昇順並びがA...
-
エクセルで行の高さ及び列幅の...
-
Excelで並び替え後にア行...
-
【Excel VBA】指定した行の最大...
-
エクセルの時刻のカウントが出...
-
オートフィルタ後のデータから...
-
急ぎ!色のついたセルを非表示...
-
EXCELで日付を比べ3か月以内の...
-
基準日以前のデータを範囲を指...
-
エクセル VBA 行間隔を飛ばした...
-
excel / ピポッド 日数を出したい
-
プルダウンに【なし、平均、デ...
-
マクロで行の高さを設定したい
-
エクセル関数について
-
文字列を比較し、相違するフォ...
-
EXCEL 最終行のデータを他のセ...
-
VBA 複数行の検索及び抽出
-
検索条件に合うセルの個数を数...
-
VBA 配列で型がエラーになります。
-
行の一番右のデータセルと同じ...
おすすめ情報