advanced help
per page, with , order by , clip by
Results of 1 - 1 of about 8928 for リスト (0.006 sec.)
[[20150615115718]]
#score: 2746
@digest: 4e1c442222c6e36de5b70b057fd7cbac
@id: 68242
@mdate: 2015-06-16T14:59:14Z
@size: 7079
@type: text/plain
#keywords: 番db (43943), 紫電 (26027), 電改 (25864), 20150711 (22494), 20150710 (22494), 当表 (16654), 20150531 (15241), 中p2 (15241), 20150709 (15241), 分表 (8515), 当( (8350), (紫 (8179), 略称 (7385), fieldinfo (7297), 業担 (7224), 型番 (7155), ト( (7098), 表, (6843), texttocolumns (6328), datatype (5878), xldelimited (5648), 表= (5427), 理効 (5419), 区分 (4957), 表( (4647), ト, (4492), 担当 (3679), リス (3191), 列). (3033), ト") (2773), 分" (2408), 分( (2375)
『ループのやり方がわからない2』(紫電改)
【ループのやり方がわからない】で、色んなご意見をいただき、説明不足 のご指摘がありましたので、仕切りなおしをさせていただきました。 [[20150531194445]] 『大きいデータの処理』(紫電改) [[20150610131559]] 『ループのやり方がわからない』(紫電改) 前回のご指摘内容は ・どのようなレイアウトのシートから、何を(どんな条件のものを) ・どのようなシートのどこに転記したいか。 それを、コードではなく言葉で、要件として整理して説明されてはいかがですか? 処理効率を考えるなら、 1回あたりの書き込み行為自体が大きな負荷を持ちます。ここはループでやるべきでは ありません。 ・マッチングすべきリストを、Dictinaryに格納しておき ・O列の値とのマッチング結果を配列にセットし ・最後に配列から、B列に一括して落とし込む こういった方法を検討すべきだと思います。 でした。 以下のマクロは、大きなcsvファイルからSheets("リスト")に貼り付けたところから 始まります。 A列、F列、I列を日付けに替え、O列からR列まで計算式を入れるというも のです。 基本的な記述のしかたや、処理効率を考慮という点で、ご指導よろしくお願いします。 Sheets("リスト") A B C D E F G H 1 納期 製品NO, 型番 注文数 現工程 受入日 工程順 棚 2 20150710 11ABCD11 AB11 100 a 20150529 R1 A 3 20150710 12ABCD12 AB12 100 a 20150530 R2 A 4 20150711 13ABCD13 AB14 50 b 20150530 R1 B 5 20150712 14ABCD14 AB15 200 b 20150531 R3 B 6 20150712 15ABCD15 AB15 300 c 20150531 R2 C I J K L M N 1 払出日 整理NO, 担当者 略称 ライン 略称1 2 20150709 24 鈴木 AB1 ABC AB 3 20150709 2 吉田 AA3 DEF AA 4 20150710 6 竹本 AB1 ABC AB 5 20150711 21 鈴木 AC2 HIJ AC 6 20150711 3 山路 AA3 DEF AA Sheets("型番DB") A B C D 1 略称 営業担当 P区分 priority 2 AB12 伊藤 ★21鈴木 P1 3 CH11 藤田 ★24鈴木 P1 4 SW11 藤田 ★21田中 P2 5 AZ12 伊藤 ★24田中 P2 6 CV14 森本 ★ P3 Sub test1() Set shtA = Workbooks("デイリー.xlsm").Worksheets("リスト") shtA.Columns("A:A").TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _ FieldInfo:=Array(1, 5) Columns("A:A").NumberFormatLocal = "m/d""(""aaa"")""" shtA.Columns("F:F").TextToColumns Destination:=Range("F1"), DataType:=xlDelimited, _ FieldInfo:=Array(1, 5) Columns("F:F").NumberFormatLocal = "m/d""(""aaa"")""" shtA.Columns("I:I").TextToColumns Destination:=Range("I1"), DataType:=xlDelimited, _ FieldInfo:=Array(1, 5) Columns("I:I").NumberFormatLocal = "m/d""(""aaa"")""" With ActiveSheet.UsedRange .Value = Application.Trim(.Value) End With b = shtA.Range("A" & Rows.Count).End(xlUp).Row c = 15 Range(Cells(2, c), Cells(b, c)) = "=IF(I2="""","""",""★"")" Range(Cells(2, c), Cells(b, c)).Value = Range(Cells(2, c), Cells(b, c)).Value Cells(1, c) = "ABC" c = c + 1 Range(Cells(2, c), Cells(b, c)) = "=O2&J2&K2" Range(Cells(2, c), Cells(b, c)).Value = Range(Cells(2, c), Cells(b, c)).Value Cells(1, c) = "DEF" c = c + 1 Range(Cells(2, c), Cells(b, c)) = "=IF(ISERROR(VLOOKUP(P2,型番DB!C:D,2,FALSE)),"""",(VLOOKUP(P2,型番DB!C:D,2,FALSE)))" Range(Cells(2, c), Cells(b, c)).Value = Range(Cells(2, c), Cells(b, c)).Value Cells(1, c) = "P区分" c = c + 1 Range(Cells(2, c), Cells(b, c)) = "=IF(ISERROR(VLOOKUP(L2,型番DB!A:B,2,FALSE)),"""",(VLOOKUP(L2,型番DB!A:B,2,FALSE)))" Range(Cells(2, c), Cells(b, c)).Value = Range(Cells(2, c), Cells(b, c)).Value Cells(1, c) = "営業担当" End Sub < 使用 Excel:Excel2007、使用 OS:Windows7 > ---- 回答ではありません。 前回のスレッドみましたが、βさんから「ループで行うべきではない」というのが核心だと思いますが・・・。 それを踏まえたうえのタイトルですかね? さらに、マナさんから既に提案がありましたよね? 参考にした結果が全然表現されていないと思いますが、いかがですか? レイアウトについても記述頂きましたが、 > 以下のマクロは、大きなcsvファイルからSheets("リスト")に貼り付けたところから の「張りつけたデータ」なのか、それを「加工したデータ」なのかの説明もありませんよね? 張りつけたデータと、加工後どうあるべきなのか、明確にされてはいかがですか? (稲葉) 2015/06/15(月) 18:08 ---- 簡単にいくつか ・私的にもループで処理する必要性がいまいち見えない ・ワークシートを変数に入れているけど、途中から使ってない →ActiveSheetになってたり、シート自体を指定していなかったりで中途半端 ・「Range(Cells(2, c), Cells(b, c))」という記述が複数回出てくるので これをWithでくくるか、変数にセットしてから使用するかしたほうが 多少みやすいのではないか (ご近所PG) 2015/06/15(月) 18:24 ---- 稲葉さん、ご近所PGさん、ありがとうございました。 変数やwithの使いかた、きちんと理解できていません。 もう少し勉強し直してから出直します。 (紫電改) 2015/06/15(月) 21:44 ---- 少しでも、何をしようとしているかが伝わればよいです。 Sub test2() Dim ws1 As Worksheet, ws2 As Worksheet Dim dic担当 As Object, dic区分 As Object Dim 担当表, 区分表 Dim i As Long Dim 列 Dim リスト Set ws1 = Worksheets("リスト") Set ws2 = Worksheets("型番DB") Set dic担当 = CreateObject("scripting.dictionary") Set dic区分 = CreateObject("scripting.dictionary") 担当表 = ws2.Range("a1", ws2.Range("a1").End(xlDown)).Resize(, 2).Value For i = 2 To UBound(担当表, 1) dic担当(担当表(i, 1)) = 担当表(i, 2) Next 区分表 = ws2.Range("c1", ws2.Range("c1").End(xlDown)).Resize(, 2).Value For i = 2 To UBound(区分表, 1) dic区分(区分表(i, 1)) = 区分表(i, 2) Next With ws1.Range("a1").CurrentRegion .Value = Application.Trim(.Cells) For Each 列 In Array(1, 6, 9) .Columns(列).TextToColumns DataType:=xlDelimited, FieldInfo:=Array(1, 5) .Columns(列).NumberFormatLocal = "m/d(aaa)" Next リスト = .Resize(, 18).Value End With リスト(1, 15) = "ABC" リスト(1, 16) = "DEF" リスト(1, 17) = "P区分" リスト(1, 18) = "営業担当" For i = 2 To UBound(リスト, 1) リスト(i, 15) = IIf(リスト(i, 9) = "", "", "★") リスト(i, 16) = リスト(i, 15) & リスト(i, 10) & リスト(i, 11) リスト(i, 17) = dic区分(リスト(i, 16)) リスト(i, 18) = dic担当(リスト(i, 12)) Next ws1.Range("a1").Resize(UBound(リスト, 1), UBound(リスト, 2)).Value = リスト End Sub (マナ) 2015/06/16(火) 23:29 修正23:56 ---- ↑application.trimで配列サイズ大きすぎてエラーがでたので修正 (マナ) 2015/06/16(火) 23:59 ...
http://www.excel.studio-kazu.jp/wiki/kazuwiki/201506/20150615115718.txt - [detail] - similar
PREV NEXT
Powered by Hyper Estraier 1.4.13, with 97017 documents and 608140 words.

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