Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 5
Default How does Collection.Item search

I recently moved from searching for data by arrays to collections, but found
that my macros now take 2 or 3 minute to process whereas when I was using
arrays it took 2 or 3 seconds to do the same work. But I don't want to go
back to arrays because indexing is always alway error prone.

I could add a binary search subroutine to speed up the search, but I was
wondering if that's already included in the Collections class. So, how does
Collections use the key to look up an item? Is it a simple sequential
search? If the adds are made with the keys presented alphabetically (less
work than debugging a binary search subroutine), will it respond better?
Thanks.
  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 6,953
Default How does Collection.Item search

I suspect it builds a hash table or index

This impression is reinforced from an Article on MSDN about working with
collections:

"This is because after deleting the first item, all items in the collection
are re-indexed so that what was the second item is now the first. "

A dictionary object from the scripting runtime may give you more of what you
need.

--
Regards,
Tom Ogilvy


"Ray Pixley" wrote:

I recently moved from searching for data by arrays to collections, but found
that my macros now take 2 or 3 minute to process whereas when I was using
arrays it took 2 or 3 seconds to do the same work. But I don't want to go
back to arrays because indexing is always alway error prone.

I could add a binary search subroutine to speed up the search, but I was
wondering if that's already included in the Collections class. So, how does
Collections use the key to look up an item? Is it a simple sequential
search? If the adds are made with the keys presented alphabetically (less
work than debugging a binary search subroutine), will it respond better?
Thanks.

  #3   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 5
Default How does Collection.Item search

I saw the docs on the dictionary and tried it, specifically (copying from the
help file) :

Sub testDictionary()
Dim d 'Create a variable
Set d = CreateObject(Scripting.Dictionary)
d.add "a", "Athens" 'Add some keys and items
d.add "b", "Belgrade"
d.add "c", "Cairo"
End Sub

But when I try to execute (F8) it, I get "Compile Error: Variable not
Defined" and the word "Scripting" is not highlighted.

Suggestions?


"Tom Ogilvy" wrote:

I suspect it builds a hash table or index

This impression is reinforced from an Article on MSDN about working with
collections:

"This is because after deleting the first item, all items in the collection
are re-indexed so that what was the second item is now the first. "

A dictionary object from the scripting runtime may give you more of what you
need.

--
Regards,
Tom Ogilvy


"Ray Pixley" wrote:

I recently moved from searching for data by arrays to collections, but found
that my macros now take 2 or 3 minute to process whereas when I was using
arrays it took 2 or 3 seconds to do the same work. But I don't want to go
back to arrays because indexing is always alway error prone.

I could add a binary search subroutine to speed up the search, but I was
wondering if that's already included in the Collections class. So, how does
Collections use the key to look up an item? Is it a simple sequential
search? If the adds are made with the keys presented alphabetically (less
work than debugging a binary search subroutine), will it respond better?
Thanks.

  #4   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 5
Default How does Collection.Item search

Er....Make that "Scripting" is highlighted.

"Tom Ogilvy" wrote:

I suspect it builds a hash table or index

This impression is reinforced from an Article on MSDN about working with
collections:

"This is because after deleting the first item, all items in the collection
are re-indexed so that what was the second item is now the first. "

A dictionary object from the scripting runtime may give you more of what you
need.

--
Regards,
Tom Ogilvy


"Ray Pixley" wrote:

I recently moved from searching for data by arrays to collections, but found
that my macros now take 2 or 3 minute to process whereas when I was using
arrays it took 2 or 3 seconds to do the same work. But I don't want to go
back to arrays because indexing is always alway error prone.

I could add a binary search subroutine to speed up the search, but I was
wondering if that's already included in the Collections class. So, how does
Collections use the key to look up an item? Is it a simple sequential
search? If the adds are made with the keys presented alphabetically (less
work than debugging a binary search subroutine), will it respond better?
Thanks.

  #5   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 35,218
Default How does Collection.Item search

Set D = CreateObject("Scripting.Dictionary")

It's just a string here, so surround it with double quotes.

Ray Pixley wrote:

I saw the docs on the dictionary and tried it, specifically (copying from the
help file) :

Sub testDictionary()
Dim d 'Create a variable
Set d = CreateObject(Scripting.Dictionary)
d.add "a", "Athens" 'Add some keys and items
d.add "b", "Belgrade"
d.add "c", "Cairo"
End Sub

But when I try to execute (F8) it, I get "Compile Error: Variable not
Defined" and the word "Scripting" is not highlighted.

Suggestions?

"Tom Ogilvy" wrote:

I suspect it builds a hash table or index

This impression is reinforced from an Article on MSDN about working with
collections:

"This is because after deleting the first item, all items in the collection
are re-indexed so that what was the second item is now the first. "

A dictionary object from the scripting runtime may give you more of what you
need.

--
Regards,
Tom Ogilvy


"Ray Pixley" wrote:

I recently moved from searching for data by arrays to collections, but found
that my macros now take 2 or 3 minute to process whereas when I was using
arrays it took 2 or 3 seconds to do the same work. But I don't want to go
back to arrays because indexing is always alway error prone.

I could add a binary search subroutine to speed up the search, but I was
wondering if that's already included in the Collections class. So, how does
Collections use the key to look up an item? Is it a simple sequential
search? If the adds are made with the keys presented alphabetically (less
work than debugging a binary search subroutine), will it respond better?
Thanks.


--

Dave Peterson


  #6   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 4,391
Default How does Collection.Item search

You may find this thread interesting. Whilst it for VB not VBA, the
underlying reasoning applies.

http://groups.google.co.uk/groups?as...=2007&safe=off

Note there are other implementations of a "Collection" available that will
may be faster than VBA/VB's built in one.

NickHK

"Ray Pixley" wrote in message
...
I recently moved from searching for data by arrays to collections, but

found
that my macros now take 2 or 3 minute to process whereas when I was using
arrays it took 2 or 3 seconds to do the same work. But I don't want to go
back to arrays because indexing is always alway error prone.

I could add a binary search subroutine to speed up the search, but I was
wondering if that's already included in the Collections class. So, how

does
Collections use the key to look up an item? Is it a simple sequential
search? If the adds are made with the keys presented alphabetically (less
work than debugging a binary search subroutine), will it respond better?
Thanks.



  #7   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 947
Default How does Collection.Item search

Set d = CreateObject(Scripting.Dictionary)


Just to let you know, that error in the Help system has been there for a
long time.

Set d = CreateObject("Scripting.Dictionary")

--
Dana DeLouis

"Ray Pixley" wrote in message
...
I saw the docs on the dictionary and tried it, specifically (copying from
the
help file) :

Sub testDictionary()
Dim d 'Create a variable
Set d = CreateObject(Scripting.Dictionary)
d.add "a", "Athens" 'Add some keys and items
d.add "b", "Belgrade"
d.add "c", "Cairo"
End Sub

But when I try to execute (F8) it, I get "Compile Error: Variable not
Defined" and the word "Scripting" is not highlighted.

Suggestions?


"Tom Ogilvy" wrote:

I suspect it builds a hash table or index

This impression is reinforced from an Article on MSDN about working with
collections:

"This is because after deleting the first item, all items in the
collection
are re-indexed so that what was the second item is now the first. "

A dictionary object from the scripting runtime may give you more of what
you
need.

--
Regards,
Tom Ogilvy


"Ray Pixley" wrote:

I recently moved from searching for data by arrays to collections, but
found
that my macros now take 2 or 3 minute to process whereas when I was
using
arrays it took 2 or 3 seconds to do the same work. But I don't want to
go
back to arrays because indexing is always alway error prone.

I could add a binary search subroutine to speed up the search, but I
was
wondering if that's already included in the Collections class. So, how
does
Collections use the key to look up an item? Is it a simple sequential
search? If the adds are made with the keys presented alphabetically
(less
work than debugging a binary search subroutine), will it respond
better?
Thanks.



Reply
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules

Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
How to assign a collection item? Jim Cone Excel Programming 0 October 28th 06 12:34 AM
Reference to Item in Collection Chad Excel Programming 2 February 19th 06 02:37 PM
Cannot remove item from collection Kou Vang[_2_] Excel Programming 1 January 31st 06 08:24 PM
Add Unique item to Collection Dick Kusleika[_3_] Excel Programming 8 January 21st 04 08:59 PM
Removing an Item From a Collection Dan Gesshel Excel Programming 4 November 1st 03 01:12 PM


All times are GMT +1. The time now is 11:00 PM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Copyright ©2004-2025 ExcelBanter.
The comments are property of their posters.
 

About Us

"It's about Microsoft Excel"