アプリ版:「スタンプのみでお礼する」機能のリリースについて

<文字列マクロについて>

皆さま お力を貸して下さい。
初心者で、何もわからず書いておりますがすみません。

下記の2つのマクロを教えて下さい。
?横に並んだ「ある行」に在るデータを「列」に変換し、
 指定した数だけ並べる
 
 あいうえお    ←A1セルからE1まで5列(これは状況により変わる)
 
    ↓(マクロ実行:3行同じ数だけ並べるという指定)

 あ        →A1セルから下にひたすら、同じ文字が続き順に並ぶ
 あ
 あ
 い
 い
 い
 う
 う        →A1セルから下に並べる(3行は指定できれば別の数字にも変えたい
 う
 え
 え
 え
 お
 お
 お

?規則的に並んだデータのまとまりをセットで移動する。
 例だと5つの塊(これは変数とおきたい)
 
 あ A              a
 い B              b
 う C               c 
 え D               d
 お E              e

   ↓(マクロ実行)
 あ
 い
 う
 え
 お
 A
 B
 C
 D
 E
 
 
 ・
 ・
 ・
 ・
 
 a
b
c
d
e




   

A 回答 (3件)

≪1≫と≪2≫を纏めてみました。


元のデータ範囲内のセルを選択しておいてからマクロを実行してください。

Dim drng As Range
Dim n As Integer
Dim i As Long

If TypeName(Selection) <> "Range" Then Exit Sub
If ActiveCell = "" Then Exit Sub

n = 3
Set drng = ActiveCell.CurrentRegion
With drng
For i = 1 To .Columns.Count
If .Rows.Count = 1 Then
drng(1).Resize(n, 1).Offset((i - 1) * n).Value = drng(i).Value
Else
.Columns(1).Offset((i - 1) * .Rows.Count).Value = .Columns(i).Value
End If
Next i
End With
    • good
    • 0

文字列で考えるという何かの課題のようでしたので


データ型をString と Variant の配列型でお答えします。

(1)
Public Sub ans1()
  Dim str As String
  Dim cnt As Long
  Dim i As Long
  Dim j As Long

  str = Range("A1")
  cnt = InputBox("何回繰り返す?")

  For i = 1 To Len(str)
    For j = 1 To cnt
      Range("A2").Offset(cnt * (i - 1) + j) = Mid(str, i, 1)
    Next j
  Next i
End Sub

(2)
Public Sub ans2()
  Dim str As Variant
  Dim i As Long

  For i = 0 To 4
    str = Range("A1:A5").Offset(, i)
    Range("A11:A15").Offset(i * 5) = str
  Next
End Sub


(2)の str = Range("A1:A5").Offset(, i) は
str(1)~str(5) に A1~A5 の値を1つずつ入れてます。
何セットの文字があるのか不明でしたので5回行っています。
    • good
    • 0

一例です。



≪1≫
Dim drng As Range
Dim i As Long

Set drng = Range("A1:E1")
For i = 1 To drng.Count
Range("A1:A3").Offset((i - 1) * 3).Value = drng(i).Value
Next i

≪2≫
Dim drng As Range
Dim i As Long

Set drng = Range("A1:E5")
With drng
For i = 1 To .Columns.Count
.Columns(1).Offset((i - 1) * .Rows.Count).Value = .Columns(i).Value
Next i
End With
    • good
    • 0

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