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を探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・好きな「お肉」は?
- ・あなたは何にトキメキますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelで2行単位のソートの出来...
-
エクセルで日付から日にちを削...
-
エクセルで1列に500行並んだデ...
-
excel:別シートの値を飛び飛び...
-
エクセルで、重複データを除外...
-
複数の条件に合う行番号を取得...
-
Countifよりも早く重複数をカウ...
-
エクセルで並び替えをしたあと...
-
エクセル~空白のセルのある行...
-
特定の文字がある行を別シート...
-
エクセル2016にて、行挿入&コピ...
-
【Excel】小計単位で並べ替えを...
-
VBA 大きなtxtテキストファ...
-
差し込み印刷 «Next Record»に...
-
Excelの30個ずつの平均値の出し方
-
エクセルVBA C列に特定の文字列...
-
EXCELでの重複データカウント方...
-
エクセルの複数のセルを一括で...
-
エクセルで勝手に表示された打...
-
EXCELで○ヶ月を○年○ヶ月に変換...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで日付から日にちを削...
-
Excelで2行単位のソートの出来...
-
エクセルで1列に500行並んだデ...
-
excel:別シートの値を飛び飛び...
-
複数の条件に合う行番号を取得...
-
エクセルで、重複データを除外...
-
Excelの30個ずつの平均値の出し方
-
Countifよりも早く重複数をカウ...
-
VBA 数式を最終行までコピー
-
エクセルVBA C列に特定の文字列...
-
500行の中から、多い順に抽出す...
-
エクセル2016にて、行挿入&コピ...
-
エクセルで横並びの複数データ...
-
エクセル~空白のセルのある行...
-
Excelで2つのデータの突合せを...
-
エクセルで時刻だけを抜き出す...
-
エクセルで重複データを削除す...
-
【Excel】小計単位で並べ替えを...
-
本日の日付を超えているものを...
-
VBA 大きなtxtテキストファ...
おすすめ情報