連投すみません!
前に質問させていただいた内容と少し重複するのですが、マクロが思ったように動いてくれません汗
今、B列にくだものの名前とアルファベットが入っており、A列に1から連番がふってあるとします。そして、B列に果物の名前の入った値のA列は、いったん連番がリセットされ、1に戻されます。
このとき、A列の1から連番の最後までをJ列からN列にかけて3行×5列の表にしたいのですが、写真のコードだと上手く機能しないようです。
コードをいじくってもどうしてもうまくいきません…汗皆様のお知恵を拝借したく思います!
No.1ベストアンサー
- 回答日時:
こんばんは!
おそらく前回回答したものです。
前回の配置では数値と数値の間に空白セルが存在していてたと思います。
そのため、あのようなコードにした記憶があります。
お示しのコード内の
>Do While Cells(kRow, "A") <> ""
>myTable(Cells(kRow, "A")) = Cells(kRow, "B")
>kRow = kRow + 1
>iRow = kRow
>Loop
を
>Do
>myTable(Cells(kRow, "A")) = Cells(kRow, "B")
>If Cells(kRow + 1, "A") <= 1 Then Exit Do
>kRow = kRow + 1
>Loop
に変更してみてください。m(_ _)m
tom04様
お礼が遅れてしまい、大変申しわけありません!!
そうなんです、前は空白が存在していたのですが、今回のは空白が消されているパターンなのです。
いただいたコードで無事上手くいきました!!
そしてDo while 文を私が理解してないということをようやく理解できました笑
最後に根本的なところで一点おききしてもよいでしょうか??
Do myTable(Cells(kRow,)"A") = Cells(kRow, "B")
↑
ここでB列の値がどんどん表にはいっていくのだということはなんとなく分かるのですが、表はA列にはないですよね??
ここでは何をマシンに指示してるのかもしお時間があれば教えていただけないでしょうか??
No.2
- 回答日時:
No.1です。
連投ごめんなさい。
投稿後思ったのですが、
ご自身で「3行×5列」と決めていらっしゃいますが、
列数だけ決定すれば行数はあえてこちらで設定しない方法はどうでしょうか?
Sub Sample2()
Dim iRow As Long, kRow As Long, myTable As Range
Dim myMax As Long, myRow As Long
'▼行数を決定
myMax = WorksheetFunction.Max(Range("A:A"))
myRow = WorksheetFunction.RoundUp(myMax / 5, 0) '←5列と決まっている場合の行数設定//★
'▲
For iRow = 1 To Cells(Rows.Count, "B").End(xlUp).Row
If Cells(iRow, "A") = 1 Then
Set myTable = Cells(Rows.Count, "E").End(xlUp).Offset(2).Resize(myRow, 5) '★
kRow = iRow
Do
myTable(Cells(kRow, "A")) = Cells(kRow, "B")
If Cells(kRow + 1, "A") <= 1 Then Exit Do
kRow = kRow + 1
Loop
iRow = kRow
End If
Next iRow
End Sub
これで1ブロックのデータ数がいくつあっても対応できると思います。m(_ _)m
今回は代入しなければならない表のフォーマットが決まっていたのですが、tom04様のお陰でさらに応用の幅が広がりました!!ありがとうございます!
No.3
- 回答日時:
続けてお邪魔します。
>最後に根本的なところで一点おききしてもよいでしょうか??
今回の質問ではたまたまA列が数値(連番)なのであのような書き方をしました。
範囲指定したセルの○番目にB列のデータを表示!というコードです。
仮に「りんご」のブロックで見ていくと
Cells(kRow, "A") が 1~10 という連番になりますので、
範囲指定内の「A列のkRow番目」にその行のB列データを!というコトです。
セルを範囲指定し↓のコードでお遊び程度で試してみてください。
Sub Asobi()
Dim cnt As Long, c As Range
For Each c In Selection
cnt = cnt + 1
c = cnt
Next c
End Sub
指定した範囲を横に向かって順に数値が表示されるはずです。
重複しますが
>myTable(Cells(kRow, "A")) = Cells(kRow, "B")
で範囲指定したmyTableの「A列の数値」番目にその行のB列を代入!というコードになります。
この程度でよろしいでしょうか?m(_ _)m
No.4
- 回答日時:
何度もごめんなさい。
お遊びのコードは↓の方が判りやすいと思います。
Sub Acobi2()
Dim i As Long
For i = 1 To Selection.Count
Selection(i) = i
Next i
End Sub
どうも失礼しました。m(_ _)m
tom04様
わざわざご返答いただき本当にありがとうございます。大変よくわかりました!!!
会社での実作業用にはじめてとり組んだVBAですが、tom04様のお力なしには間違いなく完成しなかったと思います。
まさかネットでこんな神様みたいな人に出会えると思っていませんでした…!
重ね重ね御礼申し上げます!!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語の質問です。 以下の命令を実行するプログラムを作りました ①文字列aとbの長さを表示 ②aとb 1 2022/04/29 15:35
- Visual Basic(VBA) vbaエクセルマクロ RemoveDuplicatesについて RemoveDuplicatesを使 1 2023/02/27 22:21
- Excel(エクセル) マクロだと数式が表示される 2 2022/09/10 14:48
- Visual Basic(VBA) 指定月分の顧客データファイルを統合して並べ替え、所定の場所に貼り付ける (再質問) 4 2022/09/14 22:51
- Visual Basic(VBA) Excel vbaについて知恵もしくは、コード教えて下さいm(__)m ① 表にあるデータをコピー、 2 2022/09/01 23:57
- Excel(エクセル) Excelの関数について 3 2022/11/13 23:47
- Visual Basic(VBA) 【VBA】複数行あるカンマ区切りのデータを全て縦に一列に並べたい 5 2022/04/13 17:03
- Excel(エクセル) 別シートの表の値を参照したい 2 2022/03/30 15:11
- Excel(エクセル) 現在のセルの文字列を右隣のセルの名前にするマクロをつくりたい 4 2023/01/12 09:01
- Visual Basic(VBA) 列と行の名前(重複あり)が交差するセルに、データを入力したい 2 2022/06/25 22:42
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで離れた列を選択して...
-
えABのある列って
-
LEFT関数とIF関数の組み合わせ...
-
CSVファイルの「0落ち」にVBA
-
土日の列幅の自動変更を教えて...
-
エクセル 重複したデータを別...
-
VBAで別ブックの列を検索し、該...
-
最終行に合計(最終行が列によ...
-
エクセル 選択するマクロ
-
オートフィルターの複数抽出と...
-
VBAで結合セルを転記する法を教...
-
データシートビューのタイトル...
-
百マス計算の引き算作り方を教...
-
Excel2007で行の列をひとくくり...
-
アクセス 取り込み時に、桁数(...
-
エクセルマクロでオートフィル...
-
csvデータの列の入れ替えができ...
-
エクセルマクロ、アウトライン...
-
Excelの行数、列数を増やしたい...
-
エクセルでB列とD列を比較させ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで離れた列を選択して...
-
VLOOKUPの列番号の最大は?
-
「段」と「行」の違いがよくわ...
-
LEFT関数とIF関数の組み合わせ...
-
VBA 指定した列にある日時デー...
-
CSVファイルの「0落ち」にVBA
-
エクセルで複数列の検索をマク...
-
Excelの行数、列数を増やしたい...
-
エクセルマクロの組み方
-
エクセルマクロPrivate Subを複...
-
リストからデータを紐付けしたい
-
エクセルのソートで、数字より...
-
エクセルで住所を県と市・郡と...
-
VBAで別ブックの列を検索し、該...
-
VBA
-
Excel文字列一括変換
-
エクセル 重複 隣の列 一番...
-
列方向、行方向の定義
-
Alt+Shift+↑を一括で行うには、...
-
VBAで結合セルを転記する法を教...
おすすめ情報