dポイントプレゼントキャンペーン実施中!

添付画像の通り変換するマクロはどのようにすれば良いですか?
sheet1の表からsheet2に2列に並べ替えたいです。
必ず先頭にAのセルの値が入るのですが、
A-B-C、値 の形式で縦に並べたいのです。

よろしくお願いいたします。

「【Excel VBA】表の行×列、値を2」の質問画像

A 回答 (3件)

>実際には、「11.1%」の形式の数値が入っているのすが


>空欄だった場合、代わりに「-(全角ハイフン)」を入れる場合、
>どんな変更で実現できますでしょうか?

その場合、以下のようにしてください。

sh2.Cells(wrow, 2).Value = sh1.Cells(3 + i, 2 + j).Value

If sh1.Cells(3 + i, 2 + j).Value = "" Then
sh2.Cells(wrow, 2).Value = "-"
Else
sh2.Cells(wrow, 2).Value = sh1.Cells(3 + i, 2 + j).Value
End If
にかえてください。
    • good
    • 0
この回答へのお礼

あー、if文の書き方、非常に参考になります。
これで違う文字にも変更可能ですね。
明日、本当のファイルにて試してみたいと思います。
ありがとうございました!

(一応懸念点は、Aが日付だった場合、セルには2021/6/1と入っていて、
表示上は2021年6月だった場合、このマクロだとどのように写されるかですね。
「2021年6月」でやりたい・・・)

お礼日時:2021/06/27 19:55

以下のマクロを標準モジュールに登録してください。


Option Explicit
Public Sub 並べ替え()
Dim sh1 As Worksheet
Dim sh2 As Worksheet
Dim i As Long
Dim j As Long
Dim wrow As Long
Dim A As String
Dim B As String
Dim C As String
Set sh1 = Worksheets("Sheet1")
Set sh2 = Worksheets("Sheet2")
For i = 1 To 12
For j = 1 To 8
A = sh1.Cells(1, 1).Value
B = sh1.Cells(i + 3, "B").Value
C = sh1.Cells(3, j + 2).Value
wrow = 2 + (i - 1) * 8 + j
sh2.Cells(wrow, 1).Value = A & "-" & B & "-" & C
sh2.Cells(wrow, 2).Value = sh1.Cells(3 + i, 2 + j).Value
Next
Next
MsgBox ("完了")
End Sub
    • good
    • 0
この回答へのお礼

ありがとうございます!

レイアウト通りなら期待通りの結果が出ました。
ソースもカスタマイズしやすいです。
A、B、Cはレイアウトが変わった時に応じて値の入り方を調整すれば良いですね。
行列数が変更されたらi、jを変えればよいし、自動的に一番右端、一番下を算出するようにすれば良いですね。

自分で解決できなさそうな点、一つだけ書き忘れてた点、
追加しても良いでしょうか?
今回、値1~ で表現した箇所には、
実際には、「11.1%」の形式の数値が入っているのすが
空欄だった場合、代わりに「-(全角ハイフン)」を入れる場合、
どんな変更で実現できますでしょうか?

お礼日時:2021/06/27 18:21

各セルの位置が判らないのですが


実際のレイアウトは添付図であってますか。
「【Excel VBA】表の行×列、値を2」の回答画像1
    • good
    • 0
この回答へのお礼

失礼いたしました!

合ってます

お礼日時:2021/06/27 16:59

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!