ここから本文です

エクセルVBAに関する質問です。 いま下の画像で、選択されている範囲を、 M列...

ono********さん

2020/3/2601:26:44

エクセルVBAに関する質問です。

いま下の画像で、選択されている範囲を、
M列に、画像の通りの規則で縦1列に並べたいです。

このコードを書いて頂けますでしょうか。

勉強不足ですみませんが、
よろしくお願いします!

エクセルVBA,rngs As Range,Dim n As Long,規則,With rngs,Set rngs,Rows.Count

閲覧数:
31
回答数:
2
お礼:
100枚

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

tra********さん

2020/3/2602:40:30

Sub 一例です()
Dim xTxt As String, rngs As Range, i As Long, ii As Long, Dic
Const cTxt As String = "行は(#1)、列は(#2)@A@B@値は(#3)@C@D"
Set rngs = Selection
Set Dic = CreateObject("Scripting.Dictionary")
On Error Resume Next
For Each rng In rngs.Columns(1).Cells
Dic.Add rng.Value, ""
Next rng
ii = Dic.Count - 2
Range("M3").Resize(ii).Value = "α"
ii = 3 + ii
With rngs
For i = 1 To .Rows.Count
xTxt = Replace(Replace(Replace(cTxt, _
"#1", .Cells(i, 1).Value), "#2", .Cells(i, 2).Value), "#3", .Cells(i, 3).Value)
Cells(6 * (i - 1) + ii, "M").Resize(6).Value = Application.Transpose(Split(xTxt, "@"))
Next i
End With
End Sub

  • 質問者

    ono********さん

    2020/3/2815:13:53

    ご回答ありがとうございます。
    まさに、やりたかったことができました。

    今後のために、頂いたコードを参考に少し自力でも学んでみます。

    ありがとうございました。m(_ _)m

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

ベストアンサー以外の回答

1〜1件/1件中

prs********さん

2020/3/2610:18:18

こんな感じでいかがですか。

Sub test()
Dim i(36) As String
Dim n As Long
Dim temp As Range
For Each temp In Range("h3:j14")
i(n) = temp
n = n + 1
Next
For n = 0 To 35
Range("m" & n + 3) = i(n)
Next
End Sub

こんな感じでいかがですか。

Sub test()
Dim i(36) As String
Dim n...

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる