
No.3ベストアンサー
- 回答日時:
No.2です。
>でも量が多いと 時間がかかりますね。
速度重視でやってみました。
Sub Sample2()
Dim myDic As Object
Dim i As Long, lastRow As Long
Dim wS As Worksheet
Dim myKey, myItem, myR
Set myDic = CreateObject("Scripting.Dictionary")
Set wS = Worksheets("Sheet2")
wS.Range("A:B").ClearContents
With Worksheets("Sheet1")
wS.Range("A1") = .Range("A1")
wS.Range("B1") = "合計"
lastRow = .Cells(Rows.Count, "A").End(xlUp).Row
myR = Range(.Cells(2, "A"), .Cells(lastRow, "B"))
For i = 1 To UBound(myR, 1)
If Not myDic.exists(myR(i, 1)) Then
myDic.Add myR(i, 1), myR(i, 2)
Else
myDic(myR(i, 1)) = myDic(myR(i, 1)) + myR(i, 2)
End If
Next i
End With
myKey = myDic.keys
myItem = myDic.items
myR = Range(wS.Cells(2, "A"), wS.Cells(UBound(myKey) + 2, "B"))
For i = 0 To UBound(myKey)
myR(i + 1, 1) = myKey(i)
myR(i + 1, 2) = myItem(i)
Next i
Range(wS.Cells(2, "A"), wS.Cells(UBound(myKey) + 2, "B")) = myR
Set myDic = Nothing
wS.Activate
MsgBox "完了"
End Sub
※ Excel2003だと最大行は65536行なので
最大行までデータがあってもおそらく1秒程度で終わると思います。m(_ _)m
まずもって 感謝申し上げます。天才的に早いですね。めっちゃ早いですね!!! 感動いたしました!! 先のプログラムと記載用量同じようなのにこんなに違うものなのかと!。助かりましたありがとう。
ついでとはいってまことに虫のいい話なんですが、エクセルマクロに自分のエクセルの業務捜査を記憶させてマクロにしましたが、結果がでるまで10分かかるのがあるんです、これ短くなりませんか。
同じく2003エクセルです。
内容は
SHEET1で
B列下に患者名、C列下に患者番号、BE列下に:患者使用薬品名 (但し、これは表面上は薬品名は出てゐるが、例:=IF(A28="中止",0,D28)などしての結果表示)、同じく BP列下に:患者薬品数量(但し:これも例:=IF(A28="中止","",BO28)の結果表示であった場合、但し各行では先にコメントのなどが入ってゐるものもあり、それを除去してたため空欄の行もあります。)
それをSHHET2にコピーして単に集計したいのです(B列:誰々さんで、 C列:患者番号○○に、D列:このお薬、D列:何錠出てゐる)ということを。当然 同じ患者で何種類も使用している場合はあります。(単に値だけのコピーですが、空欄の行もあります。)
その時にマクロ操作の記載は以下のようになっております。
下方の方のマクロ記載は 先に出てゐる 例:=IF(A28="中止",0,D28)などしての結果 で「0」が出る場合もあり、その時の「0」の除去作業なんです。
現在のそのプログラム記載 乗っけようしたらこの欄 文字数がいっぱいで受け付けなかったのでカットしました。
これって2003のエクセルで現在の10分より早くできますか?
メールアドレスわかったらプログラム内容直接お送りいたすのですが・・。勝手なわがままですみません。
No.2
- 回答日時:
こんにちは!
一例です。
Sheet1の1行目は項目行でデータは2行目以降にあるとします。
標準モジュールにしてください。
Sub Sample1()
Dim myDic As Object
Dim i As Long, lastRow As Long
Dim wS As Worksheet
Dim myKey, myItem, myR
Set myDic = CreateObject("Scripting.Dictionary")
Set wS = Worksheets("Sheet2")
wS.Range("A:B").ClearContents
With Worksheets("Sheet1")
wS.Range("A1") = .Range("A1")
wS.Range("B1") = "合計"
lastRow = .Cells(Rows.Count, "A").End(xlUp).Row
myR = Range(.Cells(2, "A"), .Cells(lastRow, "B"))
For i = 1 To UBound(myR, 1)
If Not myDic.exists(myR(i, 1)) Then
myDic.Add myR(i, 1), myR(i, 2)
Else
myDic(myR(i, 1)) = myDic(myR(i, 1)) + myR(i, 2)
End If
Next i
End With
myKey = myDic.keys
myItem = myDic.items
For i = 0 To UBound(myKey)
With wS.Cells(i + 2, "A")
.Value = myKey(i)
.Offset(, 1) = myItem(i)
End With
Next i
Set myDic = Nothing
wS.Activate
MsgBox "完了"
End Sub
>職場のエクセル古くてできないため・・・
手元にExcel2003がないので検証できませんが、
おそらくExcel2003でも動くと思います。m(_ _)m
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) SUMIFSと日付変換 10 2023/04/16 15:38
- Excel(エクセル) 製品番号での整列と、検索に関して 3 2023/06/28 19:20
- Excel(エクセル) エクセルの条件付き書式 個人シートを参照して集計シートに色付けしたい 1 2023/06/22 00:39
- Excel(エクセル) エクセルでのVBA 2 2022/08/03 06:48
- Excel(エクセル) マクロだと数式が表示される 2 2022/09/10 14:48
- Excel(エクセル) 【マクロ】マクロが保存されているエクセルとは、別のエクセルブックの全シートの非表示列を再表示したい 1 2022/12/24 20:48
- Excel(エクセル) SUMIFのIF分岐について 4 2023/04/15 12:57
- Excel(エクセル) エクセルの関数について A列(50個)のデータ(商品名)が、B列(100個)に、含まれているかを検索 2 2022/11/28 12:40
- Visual Basic(VBA) VBAで最新のデータを別シートに転記する方法をお教えください。 3 2022/04/07 19:20
- Visual Basic(VBA) チームごとにどの商品を何個希望しているか数量を算出したいです。 A列(A2~A265)に各チーム名が 3 2023/07/18 18:46
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・「これはヤバかったな」という遅刻エピソード
- ・初めて自分の家と他人の家が違う、と意識した時
- ・いちばん失敗した人決定戦
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで日付から日にちを削...
-
Excelで2行単位のソートの出来...
-
エクセルで、重複データを除外...
-
Countifよりも早く重複数をカウ...
-
複数の条件に合う行番号を取得...
-
エクセルで1列に500行並んだデ...
-
VBA 大きなtxtテキストファ...
-
excel:別シートの値を飛び飛び...
-
エクセルで2つ以上のリスト比...
-
エクセル2016にて、行挿入&コピ...
-
不要な行を消したい
-
500行の中から、多い順に抽出す...
-
エクセルVBA C列に特定の文字列...
-
エクセルで横並びの複数データ...
-
Excel VBAでオートフィルタで抽...
-
Excel 同じ生まれ年の人数を調...
-
Excelの30個ずつの平均値の出し方
-
Excelで2つのデータの突合せを...
-
差し込み印刷 «Next Record»に...
-
VBA 数式を最終行までコピー
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで日付から日にちを削...
-
Excelで2行単位のソートの出来...
-
複数の条件に合う行番号を取得...
-
エクセルで1列に500行並んだデ...
-
Countifよりも早く重複数をカウ...
-
excel:別シートの値を飛び飛び...
-
エクセルで、重複データを除外...
-
Excelの30個ずつの平均値の出し方
-
エクセルVBA C列に特定の文字列...
-
エクセルで横並びの複数データ...
-
エクセルで1つの会社名に対して...
-
VBA 数式を最終行までコピー
-
500行の中から、多い順に抽出す...
-
エクセル2016にて、行挿入&コピ...
-
不要な行を消したい
-
VBA 大きなtxtテキストファ...
-
【エクセル】1列内に複数ある同...
-
本日の日付を超えているものを...
-
Excel VBA 【QueryTables.Add】...
-
【Excel】フィルタの実行で重複...
おすすめ情報