TOP メニュー

2010年3月

  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      
フォトアルバム

カテゴリー「3行マクロ」の16件の投稿

2007年6月22日 (金)

余計な改行文字を削除

 一太郎Webフォーラムに余計な改行文字を削除したいのだが・・・

という投稿があった『具体的には、句点「。」に続く改行文字は残して

その他の余計な改行文字を削除する方法』を知りたいということだ。

(●`ε´●):簡単だな。すぐに思いつくのは1文字ずつ判定して

      改行文字だったら、さらにひとつ手前が句点かどうかを

      判定する・・・・句点でなければ改行文字を削除する・・・

【´・ω・`】:うん、そんなカンジでいいと思うよ。

      でも、マクロを使わなくても出来るよ

1)「句点+改行文字」を本文に出てこない文字に置換する。
  例えば@@@などに・・・。

2)改行文字を置換して消去する。(置換(R)テキストボックスには何も入力しない。)

3)@@@を「句点+改行文字」に置換する。

※改行文字は置換ダイアログボックスの「メニュー」の
▼をクリックすれば検索文字などに使えます。

(●`ε´●):でも、おいらどうしてもマクロでやりたいんだ。

【´・ω・`】:じゃあ、こんなのでどう?

文字全置換(.検索文字列="。\n",.置換文字列="@@@",.検索方向=3,.あいまい検索=0,.確認=0)
文字全置換(.検索文字列="\n",.置換文字列="",.検索方向=3,.あいまい検索=0,.確認=0)
文字全置換(.検索文字列="@@@",.置換文字列="。\n",.検索方向=3,.あいまい検索=0,.確認=0)

(●`ε´●):3行マクロだな?

【´・ω・`】:うん、これでたいていの場合はなんとかなると思うけど・・・。

(●`ε´●):これ・・・、記録マクロだろ?

【´・ω・`】:へへへ、ばれた?

2007年4月12日 (木)

ごじらを逆さまに(3)

【´・ω・`】:そうそう、この「ごじら」を「らじご」にする問題・・・。

      3行マクロでやると・・・

     For %i = 1 To Len(Range("A1"))
       Range("B1") = Range("B1") & Mid(Range("A1"), Len(Range("A1"))-%i +1,1)
     next

(●`ε´●):これでも同じだな。

     For %i = 1 To Len(Cells(1,1))
        cells(1,2) = Cells(1,2) & Mid(Cells(1,1), Len(Cells(1,1))-%i +1,1)
     Next

     ま、参考までに・・・ということだ。

2007年4月10日 (火)

座席表作成(4)

悪児さん、コメント、有り難うございます。

仰るとおり、座席表作成の3行マクロは実用的に使えるものでは

ありません。あくまでも一発芸です。(^^ゞ

くまぷーは普段はこのようなコードは書きません。(^^ゞ

>(●`ε´●):ここまで来ると可読性がいいとは言えないな・・・・。

 上の科白にあるとおり、褒められたものではありません。

>初心者向けとは、書いてなかったかな?(^^)ゞ

このコメントのことですか?

カテゴリーが「3行マクロ」になっているものは

初心者は意識していません。(^^ゞ

もしも、このコメントのことでしたら、カテゴリーが

「三四郎マクロ初心者奮戦記」になっているもののこと(15パズルとか)です。

カテゴリー「三四郎マクロ初心者奮戦記」は解説を

丁寧にしているつもりです。

ごじらの問題も初心者の方を意識していますが、これは

関数を主体にしていてマクロはオマケなので

分類を「三四郎マクロ初心者奮戦記」にはしていません。

>要するに、3行にする「ため」に、
>色々なものを犠牲にしている・・・
>それは、マクロの本道(ってなに?(^^;)(^^;))から
>外れていると、悪児は思います。(^^)ゞ

仰るとおりだと思います。

繰り返しますが3行マクロは、あくまでも一発芸です。(^^ゞ

座席表作成(3)

【´・ω・`】:9/10になったのでくまぷーの書いた座席表作成マクロを

      公開しよう。やはり、たったの3行。

!!座席表作成 by くまぷー
!!2007/03/30

!!下は初期化コード。感嘆符を外せば有効になります。
!!Range("E2:O12")=""

For %i = 2 To 37
   Cells((Cells(%i, 3)-1) mod 6*2 +2 , ((Cells(%i, 3)-1) div 6 +1)*2+3) =Cells(%i, 2)
Next

(●`ε´●):ここまで来ると可読性がいいとは言えないな・・・・。

snsSample006.zipをダウンロード

2007年4月 9日 (月)

「ごじら」をバラバラに(9)

(●`ε´●):そう言えば「ごじら」をバラバラに(5)のカテゴリーには

      3行マクロってのもあったな?!

【´・ω・`】:べべちゃんは記憶力がいいな。

(●`ε´●):マクロでやるとどうなるんだ?

【´・ω・`】::こう・・・。

For %i = 1 To Len(Han(kata(Cells(1,1))))
     Cells(1, %i +1) = Hira(Zen(Mid(Han(Kata(Cells(1,1))), %i, 1)))
Next

2007年4月 7日 (土)

「ごじら」をバラバラに(5)

(●`ε´●):おい、くまぷー、またごじらか?!

      『「ごじら」をバラバラに』はもう解決したんじゃないのか?

【´・ω・`】:いや、ごじらはなかなかしぶとくて

      あれぐらいの「バラバラ」じゃ

      すぐに復活してしまうんだ!!

(●`ε´●):「ごじらの逆襲」というわけだな。

【´・ω・`】:で、今回は簡単に蘇らないように

      さらにバラバラにするんだ。

      例えばA1に「ごじら」とあったら

          B1に「こ」

          C1に「゛」

          D1に「し」

          E1に「゛」

          F1に「ら」

      ・・・といったふうにバラバラに表示させたいんだ。

      どうやったらできるかなぁ・・・? (^。^)

「ごじら」をバラバラに(2)

(●`ε´●):え~と・・・

      A1に「ごじら」がいるとすると・・・

      B1に=Mid($A1,Col(A1),1)と入力して右方向にコピペ!!

【´・ω・`】:さすがべべちゃん!!

      なかなかだね。さすがだよ。

(●`ε´●):おい、くまぷー、褒めてくれるのはいいけど

      下の「カテゴリー」を見ると「文字列操作」の他に

      「3行マクロ」にもなっているぞ!!

【´・ω・`】:う~ん、気がついてしまったか・・・。

      今回のテーマはマクロでやるよりも

      関数でやったほうが美しいので

      知らんぷりしていようと思っていたんだが・・・

(●`ε´●):そうはいかないな。

【´・ω・`】:では・・・

     For %i = 1 To Len(Cells(1,1))
        Cells(1, %i +1) =Mid(Cells(1,1), %i, 1)
     Next

     これでどうだ?3行だけど・・・。

「ごじら」をバラバラに(1)

(●`ε´●):「ごじら」をバラバラだって?!

      そんなことができるのは芹沢博士の

      オキシジェンデストロイヤーぐらいだろ?!

【´・ω・`】:あ、べべちゃん、そうじゃなくって・・・。

      例えばA1に「ごじら」とあったら

          B1に「ご」

          C1に「じ」

          D1に「ら」

      ・・・といったふうにバラバラに表示させたいんだ。

      どうやったらできるかなぁ・・・?

          

2007年4月 6日 (金)

座席表作成(2)

 ただ今、勤務先から帰ってきました。午前中で生徒を

放課した後、ずーっと要録を書いていました。

要録の記入ほど不毛な仕事はないと思います。(-_-;)

さて、4月3日に投稿した「座席表作成」に関してです。

ふつう、表計算ソフトで座席表を作るときは

出席番号を座席の横のセルに入力して

生徒氏名をリストから呼び出すようにしますよね。

VLOOKUP()かなんかを使って・・・。

このタイプの座席表は一番単純です。

しかし、「座席表作成」で取り上げたものは生徒氏名の横の

セルに席番を入力して座席表に生徒氏名を表示させます。

難易度からいうとこちらの方が少々上です。

悪児さんがどうやら回答例を作ってくれたようです。

他の方も考えてくれたら、うれしいな。

 4/10(火)まで待っています。(^。^)

2007年4月 3日 (火)

座席表作成

(●`ε´●):いちいち手書きで座席表を作るのは面倒くさい!!

      自動で作るにはどうしたらいんだ?!

【´・ω・`】:どんなふうにしたいの?

(●`ε´●):こんなの。できる?

仕様:

(1)座席は図1のように席番が振られている。

(2)C列に図2のように席番を振る。

(3)するとB列の氏名が該当する席に図3のように表示される。

【´・ω・`】:みんな、いい案があったら教えてね。

     くまぷーの案は1週間後くらいに発表するから。

     そうそう、元になる三四郎シートはダウンロードしてね。

     snsSample005.zipをダウンロード

                      

Sns0004 図1

Sns0005

図2

Sns0006

図3

2007年3月30日 (金)

得点ランダム入力4

下が固定長文字列を利用した場合のコードです。

!!ランダム点数入力2 by くまぷー
!!2007/03/30
!!出席番号(2桁)+得点(3桁)の固定長文字列
!!出席番号得点の形式でランダムに入力すると
!!名前の横にその者の得点が表示される。

!!入力例
!!出席番号7番が87点の場合→07087

!!出席番号15番が100点の場合→15100
!!出席番号9番が5点の場合→09005

!!下は初期化コード。感嘆符を外せば有効になります。
!!Range("E2:E41").Clear(1, false, false, false)

For %i = 2 To 41
             Cells( left(Cells(%i, 1),2) + 1, 5) =Value(Right(Cells(%i, 1),3))
Next

やはり、3行マクロです。しかし、このマクロを利用する場合

一つ注意しなければならないことがあります。

それは半角で07065などと入力すると自動的に

7065になってしまうということです。頭の0が消えて

5桁が4桁になってしまうとマクロが正常に動作しません。

このことの対策としてメニューを「ツール」「オプション」と辿り

ダイアログボックスの「入力」タブから「入力モード変換」を

「手動」にして数字を全角で入力できるようにしておきます。

ランダム点数入力2)snsSample003.zipをダウンロード

Snsteisyutu003

得点ランダム入力3

【´・ω・`】:得点ランダム入力の3行マクロはどうだった?

`ε´):まあまあだな。おれはもの凄い面倒くさがりなんだ。

       できるなら「6.066」の小数点も打ちたくないな。

       数字だけ打てばいいようにしたいものだな。

       特にノートパソコンのユーザは数字とドットのキーが離れているしな。

【´・ω・`】:じゃあ、固定長の文字列を使って出席番号と

     得点を表現するってのはどうだい?

     固定長の文字列とは単純に言えば

     文字数の決まった文字列のことだ。

     例えば出席番号が2桁、得点が3桁までなら下のように表せる。

Snsteisyutu002

  

この場合なら出席番号が12、得点が89点ということだね。

`ε´):やっぱり、3行マクロなんだろうな?!

【´・ω・`】:うん。

得点ランダム入力2

!!ランダム点数入力 by くまぷー
!!2007/03/30
!!出席番号(2桁)と得点(3桁)を
!!出席番号.得点の形式でランダムに入力すると
!!名前の横にその者の得点が表示される。

!!入力例
!!出席番号7番が87点の場合→7.087
!!出席番号15番が100点の場合→15.1
!!出席番号9番が5点の場合→9.005

!!下は初期化コード。感嘆符を外せば有効になります。
!!Range("E2:E41").Clear(1, false, false, false)

For %i = 2 To 41
    Cells( Int(Cells(%i, 1)) + 1, 5) =(Cells(%i, 1) mod 1) * 1000
Next

正味、たったの3行です。

ランダム点数入力Sample002.zipをダウンロード

得点ランダム入力

前回の提出物管理3行マクロは如何だったでしょうか?

ただ前回のは「提出の有無」をチェックするだけです。

あれに付け加えて評価も自動的に名簿に

記入されるようにできないでしょうか?

中間・期末などの定期試験ならば

解答用紙が出席番号順に並んでいるからいいですけど

小テストや課題などは出席番号順に出てこないから

採点処理した評価を名簿に記入するのは結構面倒です。

そんなことが簡単にできたら便利だろうと思い

「得点ランダム入力マクロ」を紹介します。

☆マクロ仕様

出席番号(2桁)と得点(3桁)を
出席番号.得点の形式でランダムに入力すると
名前の横にその者の得点が表示される。

☆入力例
出席番号7番が87点の場合→7.087
出席番号15番が100点の場合→15.1
出席番号9番が5点の場合→9.005

(●`ε´●):今度も3行でやってみろよ。

【´・ω・`】:3行かい?

(●`ε´●):そのくらいの芸を見せてみろよ。

【´・ω・`】:わかったよ・・・。ちょっと待っててね。

Snsteisyutu001_2

2007年3月29日 (木)

提出物管理2

下がコードの中身です。

!!提出物管理 by くまぷー
!!2007/03/29
!!提出者の番号をランダムに入力すると
!!提出Check欄に○印が表示される。

For %i = 2 To 41
   Cells( Cells(%i, 1)+ 1, 5) ="○"
Next

たったのこれだけ、3行です。

ちなみにCells()はセルを指定する関数です。

Range()は記録マクロで使われるので

有名ですがCells()は記録マクロでは

使われないので、けっこう知らない方もいるようです。

Range("B3")ならばCells(3,2)

Range("C2")ならばCells(2,3)と表すことが出来ます。

つまり・・・A列、B列、C列をそれぞれ1列、2列、3列と考えて

Cells(行番号, 列番号)

・・・となります。

ループのなかではRange()よりもCells()の方が

使い勝手が良いようです。

補足)

実はサンプルとして紹介した

「提出物管理マクロ」には初期化コードが

ありません。従ってE列に1回書き込まれた

○印は自動的にはクリアーされません。

自動的にクリアーしたいのならば

For %i = 2 To 41

の上に、初期化コード

Range("E2:E41").Clear(1, false, false, false)

を加えてください。

提出物管理

そろそろ新学期です。新学期になると何かと

提出物を集めるという煩わしい仕事が待っています。

なかなか提出物が集まらなくて鬱になります(-_-;)

つまらない事務仕事にかける時間を減らし

少しでもラクをするために「提出物管理マクロ」を

作ってみました。

「提出物管理マクロ」仕様

提出物を出席番号順に揃え直すことなく

出した生徒の番号を、

集めた順に適当に入力すると

提出した生徒名の横に「○」印がつく

機能的にはこのサイトで紹介しているエクセル関数版と
同じです。しかし、売りは同じ機能を3行マクロで
実現しているというところです。
Snsteisyutu
希望があればマクロの解説をします。
提出物管理マクロ:SnsTeisyutu.lzhをダウンロード
使用ソフト:三四郎9