Hi Everybody.
I'm in a bit of a pickle and i'm hoping someone can help me.
The current situation:
Our stock dispatcher in the past has been using a spreadsheet that only he understands and even then, the convoluted ways he goes about tracking stock quantities and locations means he doesn't track everything and doubles up on things regularly. So I have been tasked with updating this system. I've gotten everything sorted so far but now I'm up to the hardest part, making a SS that identifies what products are stored in each storage location in the warehouse.
I've got four categories of stock each with there own spreadsheet, each category is made up of a list of products that we may or may not have in stock, and that will grow in size as we manufacture new products that fall into these categories.
Initially I was intending to use one cell linked to the product that contained each storage location of that product, we often have 4 pallets of the one item that go in multiple warehouse bays (not necessarily next to each other and they may be written out of order), but I wasn't sure how to use one small string of data within a larger sting, to call up what product is in said bay(s).
for instance:
|Product Name|Storage Location| --> |Storage Location|Product Name|
|Housing |A-T1,B-B4,G-F2 | |A-T1 | Housing |
|Clip |A-T2 | |A-T2 | Clip |
|B-B4 | Housing |
|G-F2 | Housing |
So I went with a 'clunky' method that I could do, where I given each product 4 storage location cells that contain only one storage location.
|Product Name|Storage Location (1)|Storage Location (2)|Storage Location (3)| --> |Storage Location|Product Name|
|Housing |A-T1 |B-B4 |G-F2 | |A-T1 | Housing |
|Clip |A-T2 | | | |A-T2 | Clip |
|B-B4 | Housing |
|G-F2 | Housing |
However as I've finished the code for the 1st spreadsheet its already getting farr long and would end up 3 times as longer.
How I've written this so far:
=IF(ISNUMBER(MATCH(B20,'Caps & Closures'!$L$6:$L$1000,0)),INDEX('Caps & Closures'!$B$6:$B$1000&" [ "&'Caps & Closures'!$C$6:$C$1000&" ] ",MATCH(B20,'Caps & Closures'!$L$6:$L$1000,0)),IF(ISNUMBER(MATCH(B20,'Caps & Closures'!$M$6:$M$1000,0)),INDEX('Caps & Closures'!$B$6:$B$1000&" [ "&'Caps & Closures'!$C$6:$C$1000&" ] ",MATCH(B20,'Caps & Closures'!$M$6:$M$1000,0)),IF(ISNUMBER(MATCH(B20,'Caps & Closures'!$N$6:$N$1000,0)),INDEX('Caps & Closures'!$B$6:$B$1000&" [ "&'Caps & Closures'!$C$6:$C$1000&" ] ",MATCH(B20,'Caps & Closures'!$N$6:$N$1000,0)),IF(ISNUMBER(MATCH(B20,'Caps & Closures'!$O$6:$O$1000,0)),INDEX('Caps & Closures'!$B$6:$B$1000&" [ "&'Caps & Closures'!$C$6:$C$1000&" ] ",MATCH(B20,'Caps & Closures'!$O$6:$O$1000,0)),"Empty"))))
While this code is far from elegant it works for the 1st spreadsheet and I was just going to continue embedding IF() statements into the [value_if_false] of the previous until I had encompassed each of the 16 columns over the four spreadsheets.
(facepalm moment in 3, 2, 1)
BUT..
As I've gotten to this point (and already begun to loose my eyesight trying to keep track of brackets) I've realized that while we often have up to 4 pallets of the one item, we do occasionally have large orders of 10+ pallets of the same item that need to be tracked and when the business grows this will only happen more frequently. This was already a poor solution to the task at hand but increasing this code to and columns to account for the few 10+ pallets is ridiculous.
So I've played around with the MID() and FINDB() functions to try and have a dynamic method of checking each spreadsheet and finding the row number (and therefore product name) that matches the storage location name but I just can't make it happen for 1 line, let alone 4 pages of dynamic lists.
I'm clearly not a wizz when it comes to excel but I do have some experience with VBA and I think this will probably be the way to do it, but I don't know what functions will be suited for this nor do I know what to look for or where to find reference material.
If anyone here thrives on a challenge or has 2 cents to chuck in, Im all ears!
I'm in a bit of a pickle and i'm hoping someone can help me.
The current situation:
Our stock dispatcher in the past has been using a spreadsheet that only he understands and even then, the convoluted ways he goes about tracking stock quantities and locations means he doesn't track everything and doubles up on things regularly. So I have been tasked with updating this system. I've gotten everything sorted so far but now I'm up to the hardest part, making a SS that identifies what products are stored in each storage location in the warehouse.
I've got four categories of stock each with there own spreadsheet, each category is made up of a list of products that we may or may not have in stock, and that will grow in size as we manufacture new products that fall into these categories.
Initially I was intending to use one cell linked to the product that contained each storage location of that product, we often have 4 pallets of the one item that go in multiple warehouse bays (not necessarily next to each other and they may be written out of order), but I wasn't sure how to use one small string of data within a larger sting, to call up what product is in said bay(s).
for instance:
|Product Name|Storage Location| --> |Storage Location|Product Name|
|Housing |A-T1,B-B4,G-F2 | |A-T1 | Housing |
|Clip |A-T2 | |A-T2 | Clip |
|B-B4 | Housing |
|G-F2 | Housing |
So I went with a 'clunky' method that I could do, where I given each product 4 storage location cells that contain only one storage location.
|Product Name|Storage Location (1)|Storage Location (2)|Storage Location (3)| --> |Storage Location|Product Name|
|Housing |A-T1 |B-B4 |G-F2 | |A-T1 | Housing |
|Clip |A-T2 | | | |A-T2 | Clip |
|B-B4 | Housing |
|G-F2 | Housing |
However as I've finished the code for the 1st spreadsheet its already getting farr long and would end up 3 times as longer.
How I've written this so far:
=IF(ISNUMBER(MATCH(B20,'Caps & Closures'!$L$6:$L$1000,0)),INDEX('Caps & Closures'!$B$6:$B$1000&" [ "&'Caps & Closures'!$C$6:$C$1000&" ] ",MATCH(B20,'Caps & Closures'!$L$6:$L$1000,0)),IF(ISNUMBER(MATCH(B20,'Caps & Closures'!$M$6:$M$1000,0)),INDEX('Caps & Closures'!$B$6:$B$1000&" [ "&'Caps & Closures'!$C$6:$C$1000&" ] ",MATCH(B20,'Caps & Closures'!$M$6:$M$1000,0)),IF(ISNUMBER(MATCH(B20,'Caps & Closures'!$N$6:$N$1000,0)),INDEX('Caps & Closures'!$B$6:$B$1000&" [ "&'Caps & Closures'!$C$6:$C$1000&" ] ",MATCH(B20,'Caps & Closures'!$N$6:$N$1000,0)),IF(ISNUMBER(MATCH(B20,'Caps & Closures'!$O$6:$O$1000,0)),INDEX('Caps & Closures'!$B$6:$B$1000&" [ "&'Caps & Closures'!$C$6:$C$1000&" ] ",MATCH(B20,'Caps & Closures'!$O$6:$O$1000,0)),"Empty"))))
While this code is far from elegant it works for the 1st spreadsheet and I was just going to continue embedding IF() statements into the [value_if_false] of the previous until I had encompassed each of the 16 columns over the four spreadsheets.
(facepalm moment in 3, 2, 1)
BUT..
As I've gotten to this point (and already begun to loose my eyesight trying to keep track of brackets) I've realized that while we often have up to 4 pallets of the one item, we do occasionally have large orders of 10+ pallets of the same item that need to be tracked and when the business grows this will only happen more frequently. This was already a poor solution to the task at hand but increasing this code to and columns to account for the few 10+ pallets is ridiculous.
So I've played around with the MID() and FINDB() functions to try and have a dynamic method of checking each spreadsheet and finding the row number (and therefore product name) that matches the storage location name but I just can't make it happen for 1 line, let alone 4 pages of dynamic lists.
I'm clearly not a wizz when it comes to excel but I do have some experience with VBA and I think this will probably be the way to do it, but I don't know what functions will be suited for this nor do I know what to look for or where to find reference material.
If anyone here thrives on a challenge or has 2 cents to chuck in, Im all ears!