• 締切済み

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

<文字列マクロについて> 皆さま お力を貸して下さい。 初心者で、何もわからず書いておりますがすみません。 下記の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    

みんなの回答

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.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

noname#130090
noname#130090
回答No.2

文字列で考えるという何かの課題のようでしたので データ型を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回行っています。

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.1

一例です。 ≪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

関連するQ&A