フィールド数が多いデータに取り組む⑤
thomさんにコードを指摘してもらって,すごいシンプルになったコード。
各Function やSubが短くてシンプルになっているコードってすごいと思うので,気持ちいい限りです。
If文は私は多用するので,今回教えてもらった技術は身に着けていかないといけないです。
やれるところから,やっていこう。
特にフラグとか他のでわたしもよく使うのに,今回気づきもしなかったので,他の方から指摘をうけれるこの状況はとてもいい。
職場では,誰もコードに何か言ってくれる人はいませんから。。
一人であーだこーだ考えていろいろなテストをして,適切に対応するしかない。
わたしが何かミスをしていたようで,というかソートをほんときちんと理解してなくてトライアンドエラーでやってたんですが,
キー1とキー2が等しいものをソートして,昇順,降順でIDの順番が入れ替わります。
他の要素が同じならID順に並んでほしいというのが人情。
そこを突き止めようとしていて,ファイル添付ができないストレスから,
とりあえずいらないものを作ってしまいました。
とっても単純なものですが,
テストのシートはこれ。
Sub シートのcode化() Dim x As Range Debug.Print "Sub MakeSheet()" Debug.Print " with activesheet" For Each x In ActiveSheet.Range("a1").CurrentRegion Debug.Print " .range(""" & x.Address & """).value=" & """" & x.value & """" Next Debug.Print " end with" Debug.Print "end sub" End Sub
中身とサブルーチン名からわかってしまうと思いますが,イミディエイトウィンドウに次のようなものを出力します。
Sub MakeSheet() with activesheet .range("$A$1").value="ID" .range("$B$1").value="姓" .range("$C$1").value="名" .range("$D$1").value="姓_ふり" .range("$E$1").value="名_ふり" .range("$F$1").value="カテゴリ" .range("$G$1").value="数値1" .range("$H$1").value="数値2" .range("$I$1").value="数値3" .range("$J$1").value="ラベル4" .range("$K$1").value="ラベル5" .range("$L$1").value="ラベル6" .range("$M$1").value="ラベル7" .range("$N$1").value="ラベル8" .range("$A$2").value="101" .range("$B$2").value="差市素" .range("$C$2").value="周世" .range("$D$2").value="さしす" .range("$E$2").value="すせ" .range("$F$2").value="A" .range("$G$2").value="40" .range("$H$2").value="23" .range("$I$2").value="21" .range("$J$2").value="101ラベル4" .range("$K$2").value="101ラベル5" .range("$L$2").value="101ラベル6" .range("$M$2").value="101ラベル7" .range("$N$2").value="101ラベル8" .range("$A$3").value="102" .range("$B$3").value="真美無" .range("$C$3").value="藍" .range("$D$3").value="まみむ" .range("$E$3").value="あい" .range("$F$3").value="A" .range("$G$3").value="192" .range("$H$3").value="38" .range("$I$3").value="26" .range("$J$3").value="102ラベル4" .range("$K$3").value="102ラベル5" .range("$L$3").value="102ラベル6" .range("$M$3").value="102ラベル7" .range("$N$3").value="102ラベル8" .range("$A$4").value="103" .range("$B$4").value="葉日" .range("$C$4").value="素太" .range("$D$4").value="はひ" .range("$E$4").value="そた" .range("$F$4").value="C" .range("$G$4").value="180" .range("$H$4").value="48" .range("$I$4").value="10" .range("$J$4").value="103ラベル4" .range("$K$4").value="103ラベル5" .range("$L$4").value="103ラベル6" .range("$M$4").value="103ラベル7" .range("$N$4").value="103ラベル8" .range("$A$5").value="104" .range("$B$5").value="差市素" .range("$C$5").value="比布" .range("$D$5").value="さしす" .range("$E$5").value="ひふ" .range("$F$5").value="A" .range("$G$5").value="58" .range("$H$5").value="10" .range("$I$5").value="25" .range("$J$5").value="104ラベル4" .range("$K$5").value="104ラベル5" .range("$L$5").value="104ラベル6" .range("$M$5").value="104ラベル7" .range("$N$5").value="104ラベル8" .range("$A$6").value="105" .range("$B$6").value="葉日" .range("$C$6").value="経帆" .range("$D$6").value="はひ" .range("$E$6").value="へほ" .range("$F$6").value="B" .range("$G$6").value="180" .range("$H$6").value="30" .range("$I$6").value="5" .range("$J$6").value="105ラベル4" .range("$K$6").value="105ラベル5" .range("$L$6").value="105ラベル6" .range("$M$6").value="105ラベル7" .range("$N$6").value="105ラベル8" .range("$A$7").value="106" .range("$B$7").value="目藻" .range("$C$7").value="早史" .range("$D$7").value="めも" .range("$E$7").value="さし" .range("$F$7").value="C" .range("$G$7").value="180" .range("$H$7").value="30" .range("$I$7").value="2" .range("$J$7").value="106ラベル4" .range("$K$7").value="106ラベル5" .range("$L$7").value="106ラベル6" .range("$M$7").value="106ラベル7" .range("$N$7").value="106ラベル8" .range("$A$8").value="107" .range("$B$8").value="立津" .range("$C$8").value="久家湖" .range("$D$8").value="たちつ" .range("$E$8").value="くけこ" .range("$F$8").value="D" .range("$G$8").value="109" .range("$H$8").value="31" .range("$I$8").value="5" .range("$J$8").value="107ラベル4" .range("$K$8").value="107ラベル5" .range("$L$8").value="107ラベル6" .range("$M$8").value="107ラベル7" .range("$N$8").value="107ラベル8" end with end sub
長くてすみません。もっと縮めるかこういうものこそ : でつなぎまくればいいんですが,
シートを再現するマクロを作るマクロです(;´▽`A``
本題に取り組みます。