教えていただいたエクセルマクロを参考に作成してみました。
マクロが動いた時は「すごい!」「うれしい!」・・と、とてもとても感動いたしました。
ありがとうございます。
1行目からですと正確に反転できるのですが、
24行目から275行目までのセルの反転を希望です。
列は2行目のみです。
以下が作成したものです。(先生のマクロにならって)
最初と最後は入れ替えできているのですが、途中数行におかしな数値が入ります。
Sub AP上下反転()
Dim 最終行 As Long
Dim temp As Variant
Dim 上行 As Long
Dim 下行 As Long
Dim 列変数 As Long
最終行 = 275
上行 = 24
For 上行 = 24 To Int(最終行 / 2)
下行 = 最終行 - 上行 + 23 + 1
For 列変数 = 2 To 2
temp = Cells(上行, 列変数).Value
Cells(上行, 列変数).Value = Cells(下行, 列変数).Value
Cells(下行, 列変数).Value = temp
Next 列変数
Next 上行
End Sub
どうぞ、どうぞ・・ご指導のほど、お願い申しあげます。
No.3ベストアンサー
- 回答日時:
とりあえず、修正しました。
Sub AP上下反転()
Dim 開始行 As Long
Dim 最終行 As Long
Dim temp As Variant
Dim 上行 As Long
Dim 下行 As Long
Dim 列変数 As Long
最終行 = 275
開始行 = 24
For 上行 = 開始行 To 開始行 + Int((最終行 - 開始行 + 1) / 2) - 1
下行 = 最終行 - 上行 + 23 + 1
For 列変数 = 2 To 2
temp = Cells(上行, 列変数).Value
Cells(上行, 列変数).Value = Cells(下行, 列変数).Value
Cells(下行, 列変数).Value = temp
Next 列変数
Next 上行
End Sub
ありがとうございます。
感謝の気持ちでいっぱいです。
今、確認しました。できました!
データ、見事に上下入れ替えができていました。
もう、あきらめて、私でできる形で仕上げて・・と言い聞かせておりました。
とてもとても・・嬉しいです。
なんとお礼申しあげていいやら・・。
10年以上前に少し勉強してマクロの魅力に引き寄せられました。
仕事で必要に迫られてのことです。
仕事ですから、間に合わないことには意味がありません。
まずはできる形で・・。(アポロ13号方式です。)
そして時間を見つけてはシンプルな形を探そうと。
思いついたコードが動いた時の感動は忘れません。
ドキドキワクワクです。
天国かと思ったら次は地獄です。
変数がうまく使えたら・・と。
今回、for next をちょっと前に使ってまたマクロのおもしろさを覚えました。
今日、データをチェックしていたら・・なんとなんと、
途中のデータが違っています。
地獄に落ちました。
そこで、初めての投稿をしました。
投稿してよかったです。
本当に自分のものにするにはまだまだ長い道のりですが、
あきらめず少しずつ少しずつ前に進んでいきます。
本当にありがとうございました。
No.4
- 回答日時:
こんにちは
少し、コードを整理して
For 列変数 = 2 To 2 は 変わらないので このループ外して
最終行 = 275 の
下あたりに 列変数=2
上行 = 24 は For 上行 = 24 で代入されていくので 不要かな
あっても結果は変わらないのだけれど
さて、ここからが本題です
下行 = 最終行 - 上行 + 23 + 1
ループの初めは確かに 下行 =275 だけれど
最後は 下行 =162 になってしまいますね。(138+24)
つまりInt(275 / 2) 書き出し行 137= 参照行138 になりません
もし、下行 = 最終行 - 上行 とすると 今度はループの最初で
書き出し行 24 = 251 となり 最終行275では無い。。
下行は 275~138に変化する変数を使うか、変化する計算式で
変数 下行に代入すれば良い事になります。
初めは下行は最終行と同じ、1回ループするごとに変化させる
言ってしまっていますが、やり方は色々ありそうです。
ありがとうございます。
先程の回答の方に修正していただき、
動かしてみると、
なんと、すばらしく上下入れ替えできました。
その方にお礼を申し上げるのが精一杯で、
原因は後回し、私の未熟な頭で少しずつ紐解いてゆこう・・
と思っておりました。
と、その時に今回の回答が届きました。
謎が解けました!
私の知りたかったことです。
とてもありがたいです。
ていねいにわかりやすく・・
解説いただきましたこと感謝します。
「あぁ・・そういうことだったんだ‥」と。
250行だとデータ1つずつチェックしても間違いが起こるから、
データを少なくしてトライしてみたり・・
悪戦苦闘でした。
解放されました。
と同時にムクムクと次の課題に挑戦しようと思います。
苦しいからこそおもしろいのですね。
そしてうれしいのですね。
とても感謝いたしております。
ありがとうございました。
No.2
- 回答日時:
開いている列に昇順にナンバーリングをいれ、範囲を決めてナンバーリング列を基準に降順に並び替える。
と言うのとは違うのかな?
先の質問を見てないからねぇ。
回答いただきまして、ありがとうございます。
今回、初めての投稿です。
投稿の仕方もわからず、なんとかかんとか投稿しました。
マクロで、for next を使ってできれば・・と思い、投稿されていた人の例に倣って、作成してみました。
250行ぐらいのデータです。
その方の回答サンプルは1行目からの上下入れ替えでした。
別シートでA1・・1行目からであれば正確な数値になりました。
希望は24行目からです。
1行目からできるのであれば or next を使って別シートに1行目から作成して、転記する・・か、
提案いただいたナンバリングを使っての方法・・等で作成します。
まずは今の自分の能力でできる形で一旦仕上げます。
でも、あきらめきれないので・・
時間を見つけては、探し続けます。
早々に回答ありがとうございました。
No.1
- 回答日時:
For Next
の使い方をよく調べてみましょう。
数値を増やすだけでなく、数値を減らすこともできます。
どのように行うかは、1行目から行った場合と同じです。
マクロのコードの一部を変えて対処しようと考えてはいけません。
全体の意味を考えず、書き写しているだけでは何も覚えられませんよ。
プログラミングというものは、こういった作業の積み重ねの上に成り立ちます。
早々に回答をいただきありがとうございます。
今回初めて投稿しました。
マクロ初心者です。
先日for nextで悪戦苦闘しながらあまりにもシンプルなコードでマクロが動いたので感動いたしました。
行列を入れ替えて、そのあと上下を入替てあと計算させていく表作成です。
別シートにナンバリングをして並び替え、コピーする方法で一旦作成します。
(今の私の能力でできる形でします。)
が、シンプルなコードに憧れがあります。
おっしゃるとおり、自分でひとつずつ考えての積上げだと思います。
今回は一旦仕上げますが、あきらめず挑戦します。
貴重なお言葉、ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・「I love you」 をかっこよく翻訳してみてください
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・昔のあなたへのアドバイス
- ・かっこよく答えてください!!
- ・あなたが好きな本屋さんを教えてください
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
B列の最終行までA列をオート...
-
Cellsのかっこの中はどっちが行...
-
vba 2つの条件が一致したら...
-
Worksheets メソッドは失敗しま...
-
Excelで、あるセルの値に応じて...
-
URLのリンク切れをマクロを使っ...
-
VBAのFind関数で結合セルを検索...
-
VBAでのリスト不一致抽出について
-
複数処理 Worksheet_Change(ByV...
-
文字列の結合を空白行まで実行
-
【VBA】2つのシートの値を比較...
-
エクセルVBA intersect colu...
-
【Excel VBA】 B列に特定の文字...
-
VBA 何かしら文字が入っていたら
-
エクセル 2つの表の並べ替え
-
複数の列の値を結合して別の列...
-
マクロについて。S列の途中から...
-
マクロ 最終列をコピーして最終...
-
IIF関数の使い方
-
C# dataGridViewの値だけクリア
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
B列の最終行までA列をオート...
-
Worksheets メソッドは失敗しま...
-
Excelで、あるセルの値に応じて...
-
vba 2つの条件が一致したら...
-
Cellsのかっこの中はどっちが行...
-
URLのリンク切れをマクロを使っ...
-
文字列の結合を空白行まで実行
-
データグリッドビューの一番最...
-
【VBA】2つのシートの値を比較...
-
VBA 何かしら文字が入っていたら
-
IIF関数の使い方
-
VBAを使って検索したセルをコピ...
-
Changeイベントでの複数セルの...
-
VBAの構文 3列置きにコピーし...
-
VBAのFind関数で結合セルを検索...
-
【Excel VBA】 B列に特定の文字...
-
VBAで指定範囲内の空白セルを左...
-
VBAでのリスト不一致抽出について
-
セルに値が入っていた時の処理
-
VBAコンボボックスで選択した値...
おすすめ情報