お世話になっております。 右の表を年と商品を書くマクロを一気にすることができないかなと思ってトライしてみましたが、うまくいかなかったです。 Sub rensyu1() Range("B1").Select ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Clear ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range("B1"), _ SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("Sheet1").Sort .SetRange Range("A2:F231") .Header = xlNo .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With Range("E1").Select ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Clear ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range("E1"), _ SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("Sheet1").Sort .SetRange Range("A2:F231") .Header = xlNo .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With
Dim tate Dim hida Dim yoko Dim syohin Dim toshi ここでタテ、ヨコの変数を0としても、 上手くいかなかったです。 For hida = 2 To 231 If Range("E" & hida).Value <> syohin Then Range("H3").Offset(tate, 0).Value = Range("E" & hida).Value syohin = Range("E" & hida).Value tate = tate + 1
ElseIf Range("B" & hida).Value <> toshi Then Range("I2").Offset(0, yoko).Value = Range("B" & hida).Value & "年" toshi = Range("B" & hida).Value yoko = yoko + 1 End If
Next NarabeID End Sub ご指導宜しくお願いします。
2018/05/18 07:40
小川慶一さんのコメント
(コメントID: 5463)
伊藤博文さん:
以下のようにすればとりあえず動きはしますね。
For hida = 2 To 231
If Range("E" & hida).Value <> syohin Then
yoko = 0 '[*]
Range("H3").Offset(tate, 0).Value = Range("E" & hida).Value
syohin = Range("E" & hida).Value
tate = tate + 1
ElseIf Range("B" & hida).Value <> toshi Then
Range("I2").Offset(0, yoko).Value = Range("B" & hida).Value & "年"
toshi = Range("B" & hida).Value
yoko = yoko + 1
End If
Next
伊藤博文さんの投稿
(投稿ID: 3905)
右の表を年と商品を書くマクロを一気にすることができないかなと思ってトライしてみましたが、うまくいかなかったです。
Sub rensyu1()
Range("B1").Select
ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range("B1"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Sheet1").Sort
.SetRange Range("A2:F231")
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Range("E1").Select
ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range("E1"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Sheet1").Sort
.SetRange Range("A2:F231")
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Dim tate
Dim hida
Dim yoko
Dim syohin
Dim toshi
ここでタテ、ヨコの変数を0としても、
上手くいかなかったです。
For hida = 2 To 231
If Range("E" & hida).Value <> syohin Then
Range("H3").Offset(tate, 0).Value = Range("E" & hida).Value
syohin = Range("E" & hida).Value
tate = tate + 1
ElseIf Range("B" & hida).Value <> toshi Then
Range("I2").Offset(0, yoko).Value = Range("B" & hida).Value & "年"
toshi = Range("B" & hida).Value
yoko = yoko + 1
End If
Next
NarabeID
End Sub
ご指導宜しくお願いします。
小川慶一さんのコメント
(コメントID: 5463)
以下のようにすればとりあえず動きはしますね。
とはいえ、2005年から2008年というラベルを何度も上書きするだけなのであまり効率良いとは言えませんが。
[*]のやり方にすぐ気がつかないとしたら、以下の課題をまだ十分に理解できてないかもしれません。
無意識にやれるように。あるいはまた、誰かに説明するつもりでマクロの作りについて説明しながらでもスラスラ書けるように練習してください。
○出現回数を数える。CountIf関数がやっていることをマクロで書くと?
https://forum.pc5bai.com/lesson/page/150
○勘定項目ごとに合計額を算出する。SumIf関数がやっていることをマクロで書くと?
https://forum.pc5bai.com/lesson/page/151