• ベストアンサー

空き番を埋めていくマクロを作りたい(再)

こんにちは、 先日、http://oshiete1.goo.ne.jp/qa4757955.htmlで質問をして、回答いただき、解決したと思ったのですが、困ったことが起こったので助けて下さい。 回答いただいたマクロで確かに空き番を埋めることはできたのですが、前提条件として、データが出席番号順になっていないとちゃんと機能しないようです。 数学などで習熟度クラスを行っているために、出席番号順になっていないシートも空き番を埋める処理をしなければなりません。もちろん出席番号順にソートし直してからすればいいわけですが、最初にソートをしないでもできる方法はないでしょうか? 私が考えたのは配列を使って、使われている番号を0に書き換え、使われていない番号はそのままにして、0以上の配列を書き込んでいくというものですが、かなり時間がかかります。もっとスマートなやり方はないでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.1

>最初にソートをしないでもできる方法はないでしょうか? 逆に言えば最初にソートすればOKなのでしょう? ソートするマクロを自動記録で作成して、処理の最初に付け加えればいいのでは? ソートして、元の順番を変えたくないというのであれば、 1)空いている列を作業列として最初の順番の控える(1、2、3…を入れる) 2)ソートする 3)必要な処理をする 4)作業列でソートし直す(元の順序に戻す) 5)作業列をクリア で可能ではないでしょうか? 1)、2)、4)、5)程度であれば、それぞれをマクロの記録で作成して、簡単な修正をすればできるでしょう。

CaveatEmptor
質問者

お礼

回答ありがとうございます。 なるほど、それでもいいですね。ソートをするマクロはすでに作ってありますし。目から鱗とという感じです。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.2

よくわかりませんが、使用されていない番号を拾い出すような感じのことなのでしょうか? 例えば使用されている生徒番号をDictionaryオブジェクトに放り込む。 その後10101~10750の生徒番号を発生させ、その生徒番号がDictionaryになければ 使用されていない番号となりそうですが、そうゆう事とは違いますかね? 的はずれでしたらごめんなさい。

CaveatEmptor
質問者

お礼

回答ありがとうございます。 なるほど、なるほどという感じです。 Dictionaryオブジェクトという手がありましたね。あんまり使ったことがないので、思い浮かびませんでした。勉強して、マクロを改変したいと思います。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 空き番を埋めていくマクロを作りたい

    こんにちは。どうしていいかわからないので助けて下さい。 私立高校で教えている者です。もうすぐ学年末の成績処理が始まるのですが、各担当によって体裁のことなるエクセルのシートをそろえる必要があります。 生徒番号は各学年7クラスですので、1年生は10101~10750、2年生は20101~20750、3年生は30101~30750の番号が割り当てられています。 留年生や選択科目・進路希望によって、クラスによって少ないクラスは36人、多いクラスは42人とばらつきがあります。 たいていの職員は学校で配布されている基本名簿データを利用しているので、7クラス分のデータは21~370行目に入っています(1組生徒は21~70行目、2組生徒は71~120行目のようになっています)。A列は生徒番号、B列は氏名、C列以降に成績などが入力されています。 担当者全員が各クラス50行ずつとって処理をしてくれていればいいのですが、担当者によっては不要な行(該当する生徒名が入っていない番号が入っている行です。例えば1年1組が40人クラスだとすると10141~10150が入力されていた61~70行目)を削除しています。そのため、そのままの状態では串刺し計算のようなことができません。 なんとか10141~10150のような空き番を最終行の1つ下から書き込んでいって、ソートをして、7クラスの生徒のデータを21~370行に納めるマクロを作りたいと思うのですが、どのようにしたらいいでしょうか?

  • 構造体配列の安定なソート

    出席番号と得点の配列を持つ構造体配列で、 出席番号順に並んだ状態でqsortを使って得点をソートする場合、 同じ得点の人でも、出席番号順はばらばらになってしまいますよね。 調べてみて、バブルソートなど安定なソートを使えばいいということが分かったのですが、 qsortは標準ライブラリにあって、 比較関数も見よう見まねで作ってなんとかなったのですが、 他の方法となると具体的にどうすればいいのか、 よくわからない状況です。 http://homepage1.nifty.com/daccho/program/algo/sort3.htm こちらのサイトのソースファイルを見て、 普通のint配列のバブルソートは出来たのですが、 構造体配列を、構造体の中の一つの要素をキーにバブルソートできるようにするには、 ここからどのように変更すればいいのでしょうか? 並び替える内容はint型だけなので、文字列をソートできるようにする必要はなく、 ソート対象も少ないので(上限100程度)、速度的な問題は考慮しなくて大丈夫だと思います。 Cは勉強中で、基本文法がわかるぐらいという状況で、 もしかしたら変なことを言っているのかもしれませんが、 よろしくお願いします。

  • EXCELで、複数シートの同じセルを一覧にして表示する方法

    EXCELで、複数シートの同じセル(たとえば、複数シートのB5)を、べつの1枚のシートに特定の列に表示する方法を教えてください。シートには名前が付いていますが、コピーしたい順に左から並んでいます。 下記にINDIRECT関数を使用する方法が記載されていましたが、マクロを使用した方法を教えてください。 マクロに関しては全くの素人ですが宜しくお願いいたします。 http://oshiete1.goo.ne.jp/qa1727203.html

  • 複数キーによるソート

    ここに、3つperlの配列があって、それぞれ問題番号、英単語、日本語訳が入っています。 これらを、例えば「英単語順」「問題番号順」などに並べ替えて先頭から順に取り出したいのですが、sort関数は配列ひとつに対してしか操作できないので、悩んでいます。 たとえば問題番号←→英単語の配列間に単語ごとのリンクを張って、片方をソートしてもリンクをたどるともう片方が取り出せるといったことはできるのでしょうか? また、配列のソートのルールを使って別の配列をソートする・・・といったことでも構いません。よろしくお願い致します。

    • ベストアンサー
    • Perl
  • 教えてもらったマクロが動作しません。解決方法をお願いします。

    http://oshiete1.goo.ne.jp/qa2643770.html ここで教えてもらったNO.11,12 マクロなのですが 馬名の下の ActiveCell.Offset(0, 1).Select という部分が黄色くなっているせいかエラーとなって中断されてしまいます。 正常に動作させるようにするにはどうしたらよいでしょうか? 回答よろしくお願いします。

  • ruby 1.8.7 で、多次元配列をソートする

    ruby 1.8.7 で、下記のような配列をソートしたいんですが、どう記述したら良いでしょうか。 x = [[1, 1], [2, 2], [11, 10], ・・・ [1, 13], [2, 14]] ..........a b a = 1番目の ソート 順 b = 2番目の ソート 順       よろしくお願いします。

    • ベストアンサー
    • Ruby
  • EXCELマクロで空欄でマクロを止めることが出来ますか

    次のような設定です。   氏名 国語 社会 数学 理科 音楽 1 山田 50 45 50 34 25 2 石田 18 34 46 34 78 …  …  …  …  …  …  … 40 山本 23 45 36 39 94 41  このような表があったときに1番から順に一人ずつ個票を作ります。印刷をしていきます。41番目の氏名が空欄なので印刷を終了させるというマクロは出来ますか。 マクロ作成レベルもツール→マクロで作成するレベルで行いたいのですが、出来ますでしょうか。教えてください。 できますか。  

  • マクロで教えてください。

    つい先ほど、色を塗るというマクロは教えていただきました。 http://okwave.jp/qa/q7829474.html 次に、sheet1のA列にある図番を参照しsheet2のA列の機種名に適合しない行全体を 削除したいのですが、可能でしょうか?

  • エクセルマクロの作り方(初歩)で教えてください。

    エクセルマクロについての初心者です。小学校で使うテスト結果の分析表(○、×の一覧表)作成の支援ソフトを作ろうとしていますが途中でわからなくなったので教えてください。 マクロにについては、配列変数、For Next,Do Loopのことが少し理解できる程度で、それらを組み合わせて作ろうとしましたが、使い方がよく分かりません。説明を簡単にするため、次の例で教えてください。児童数は40で、2行目から41行目までに児童の名前やデータが入ります。A列は出席番号、B列は名前、CからG列は正解した番号を記入するセル(問題は5問)、HからL列は問題1~5の○×を1と0で表示させます。そして出席番号1番の児童が3番と5番だけ正解なら、C2に3、D2に5を入れるだけで、H2~L2に0,0,1,0,1と自動的に表示されるようにしたいのです。実際には、児童数は200、問題数を50ぐらい考えています。C2~G2までのデータを配列変数に入れて、H2のセルにはIF文を組みわせて0か1を表示させて、それをL2まで繰り返し、それ全体を41行目まで繰り返して…とやろうとしたのですが、繰り返し方でうまくいきません。このような方法でなくてもかまいません。もっと簡単な方法があればそれも教えてください。よろしくお願いします。

  • セルにある文字列をファイル名にして、2ヶ所別のフォルダに保存するマクロ

    あるセル(A10)にある文字列をファイル名にして、2ヶ所のフォルダに 保存するマクロを教えてください。 下記質問で番号(下記アドレス参照)を採番した後、その番号をファイル 名として、2ヶ所のフォルダに保存したいのです。 http://oshiete1.goo.ne.jp/qa3195270.html マクロ初心者ですが、そのような事がマクロで出来ますか? 出来るならば、その方法を教えてください。よろしくお願いします。

スキャンデータが保存できない
このQ&Aのポイント
  • ブラザー製品MFC-J7300CDWでスキャンは出来るが、パソコンにデータが保存できません。
  • お使いの環境はWindows10であり、接続はUSBケーブルです。
  • 関連するソフト・アプリや電話回線の種類は不明です。
回答を見る

専門家に質問してみよう