advanced help
per page, with , order by , clip by
Results of 1 - 1 of about 2689 for 並べ替え (0.002 sec.)
[[20170617180759]]
#score: 4561
@digest: 5b42785c08c7838c664edac1c7e7a45f
@id: 73766
@mdate: 2017-06-18T11:17:42Z
@size: 6318
@type: text/plain
#keywords: 入所 (84767), 退所 (84404), mysh2 (40245), 所退 (33166), 所h2 (25703), 所日 (18249), 所" (14366), 所h1 (13096), 所") (11801), mysh (8545), 日退 (5559), koko (5438), ト共 (5131), 両シ (5084), 所な (3216), maxrow (3029), h21 (2732), 記3 (2716), 105 (2187), ド入 (2043), 力ミ (1702), 転記 (1568), 日) (1539), 日10 (1527), 2017 (1454), (ko (1377), ナ様 (1364), べ替 (1349), 例題 (1226), マナ (1190), 並べ (1135), に転 (991)
『マクロで縦のデータを横に』(koko)
宜しくお願いします。 「入所退所データ」シートの D列に入所者コードが入力 E列に”入所”又は”退所”のどちらかが入力 I列に日付 このようなデータが約7000行ほどあります。 D E I 105 入所 h20/2/1 105 退所 h21/1/5 105 入所 h21/5/1 177 入所 h18/5/10 177 退所 h19/2/10 280 入所 h25/5/15 これをSheet2に C D E コード 入所日 退所日 105 h20/2/1 h21/1/5 105 h21/5/1 177 h18/5/10 h19/2/10 280 h25/5/15 このような形に並べ替えをしたいのですが、 どうにもややこしくて、手におえません。 どうか宜しくお願い致します。 < 使用 Excel:Excel2007、使用 OS:WindowsVista > ---- こんな感じで考えるとできそうに思えませんか。 1)E列を上から順にみていき 2)入所なら、D、I列を、シート2のC、D列に転記 3)退所なら、2)の行のE列に転記 4)これを繰り返す (マナ) 2017/06/17(土) 19:28 ---- マナ様 私が書くとこうなってしまうのです。 どこを変えればいいのか困っています。 コード 入所日 退所日 105 h20/2/1 105 h21/1/5 105 h21/5/1 177 h18/5/10 177 h19/2/10 280 h25/5/1 下記のコードです Sub test() Dim maxrow As Long Dim mysh As Worksheet Dim mysh2 As Worksheet Dim i As Long Dim j As Long Set mysh = Worksheets("入所退所") Set mysh2 = Worksheets("並べ替え") maxrow = mysh.Cells(Rows.Count, 4).End(xlUp).Row j = 2 For i = 2 To maxrow mysh2.Range("c" & j).Value = mysh.Range("d" & i).Value If mysh.Range("e" & i).Value = "入所" Then mysh2.Range("d" & j).Value = mysh.Range("i" & i).Value ElseIf mysh.Range("e" & i).Value = "退所" Then mysh2.Range("e" & j).Value = mysh.Range("i" & i).Value Else End If j = j + 1 Next End Sub (koko) 2017/06/18(日) 00:57 ---- >2)入所なら、D、I列を、シート2のC、D列に転記 >3)退所なら、2)の行のE列に転記 ここを言い換えると 2)入所なら、D、I列を、並べ替えシートの「新たな行」のC、D列に転記 3)退所なら、「2)と同じ行」のE列に転記 並べ替えシートのどの行に転記するかは、変数j ですよね。 並べ替えシートを見ながらスッテプ実行(F8)すると どこがおかしいかわかります。 (マナ) 2017/06/18(日) 07:43 ---- マナ様 ヒント有難うございます 下記のようにかえてみました。.例題の少ないデータならOKなのですが 実際の7000行のデータだとC列のコードとD列、E列がずれて転記されてしまいます。 明日までにこのデータが必要なので、今回は手動と関数でどうにかしてみます 有難うございました。 Sub test() Dim maxrow As Long Dim mysh As Worksheet Dim mysh2 As Worksheet Dim i As Long Dim j As Long Set mysh = Worksheets("入所退所") Set mysh2 = Worksheets("並べ替え") maxrow = mysh.Cells(Rows.Count, 4).End(xlUp).Row j = 2 For i = 2 To maxrow If mysh.Range("e" & i).Value = "入所" Then j = mysh2.Cells(Rows.Count, 4).End(xlUp).Row + 1 mysh2.Range("c" & j).Value = mysh.Range("d" & i).Value mysh2.Range("d" & j).Value = mysh.Range("i" & i).Value ElseIf mysh.Range("e" & i).Value = "退所" Then j = mysh2.Cells(Rows.Count, 4).End(xlUp).Row mysh2.Range("e" & j).Value = mysh.Range("i" & i).Value Else End If Next End Sub (koko) 2017/06/18(日) 09:23 ---- >下記のようにかえてみました。.例題の少ないデータならOKなのですが >実際の7000行のデータだとC列のコードとD列、E列がずれて転記されてしまいます D列、I列はソートされている必要があります。 (マナ) 2017/06/18(日) 10:30 ---- 簡単に書いたつもりだけど、Step Debug してもわからないところがあったら質問を Sub test() Dim mysh As Worksheet, mysh2 As Worksheet, r As Range, n As Long Set mysh = Worksheets("入所退所") Set mysh2 = Worksheets("並べ替え") n = 1 With mysh For Each r In .Range("d2", .Range("d" & Rows.Count).End(xlUp)) If r.Offset(, 1).Value = "入所" Then n = n + 1 mysh2.Range("c" & n).Value = r.Value mysh2.Range("d" & n).Value = r.Offset(, 5).Value Else mysh2.Range("e" & n).Value = r.Offset(, 5).Value End If Next End With End Sub (seiya) 2017/06/18(日) 13:56 ---- seiya さんへ ・日付が西暦/月/日になってしまう ・コードが上書き(?)されてしまう => 105 h20/2/1 h21/1/5 のデータが105 h20/2/1 はなくなり、 h21/1/5 が1行目の”退所日”を上書きして居座っている といった感じでした。 >Worksheets("入所退所") には項目行がないからでしょうか? D列の最初をD1としたらいけました。 日付については、kokoさんがどうしたいのか?で決まるのかも知れませんが。 (じゅんじゅん) 2017/06/18(日) 16:08 ---- 日付の問題は単にセルの書式の問題だと思います。 kokoさんのコードでは両シート共にヘッダーがあると思います。 データのレイアウトが提示されているものであれば、提示された結果の通りになるはずですが? (seiya) 2017/06/18(日) 16:43 ---- seiyaさんへ > kokoさんのコードでは両シート共にヘッダーがあると思います。 私もそう思うのですが、最初の質問文をコピペしたからでしょうね。 kokoさんのコードも2行目からになってますし、私の早とちりかもしれません。 日付についても、元々列で書式設定されているなら心配ないのかな? お手数おかけ致しました。 (じゅんじゅん) 2017/06/18(日) 18:18 ---- 皆様 有難うございます 並べ替えはほぼ終わりました。 データがずれる原因ですが、 元データの方に原因がありました。 元データは個人別の日付順に並んでいるのですが、 入所、退所、入所、退所・・・と並ばないといけないのですが 一部の人のデータが入所、入所になっていたりする入力ミスがあり それが並べ替えがうまくいかない原因でした。 入力ミスの有る人を消去して並べ替え実行してみたら うまくいきました。 seiyaさんのコードは無駄がなく処理が早そうですね。 使わせていただきます。有難うございました。 (koko) 2017/06/18(日) 20:17 ...
https://www.excel.studio-kazu.jp/wiki/kazuwiki/201706/20170617180759.txt - [detail] - similar
PREV NEXT
Powered by Hyper Estraier 1.4.13, with 97065 documents and 608341 words.

訪問者:カウンタValid HTML 4.01 Transitional