Are you not using a database to store anything at all? This seems very limiting... it is going to get pretty ugly when there are hundreds or even thousands of Purchase Orders. You won't be able to search through them or aggregate any of the information.
But regardless, if that's what you want...
Your problem is that each PO doesn't know about any other PO. If it did, it could just add 1 to the previous one. But since it doesn't, you have to create a unique identifier. I see two ways to accomplish that. You could create a GUID, or just use the date/time.
A GUID is a Globally Unique IDentifier. It is a little ugly to generate one from within Excel, but it is guaranteed to be unique. The other problem with GUIDs is that they are pretty long (32 characters). You'll have to call a COM object or a .NET assembly to get it. This will have to be done from VBA.
This function will generate a GUID with the curly braces and dashes removed:
Function GenGuid() As String
Dim TypeLib As Object
Dim Guid As String
Set TypeLib = CreateObject("Scriptlet.TypeLib")
Guid = TypeLib.Guid
' format is {24DD18D4-C902-497F-A64B-28B2FA741661}
Guid = Replace(Guid, "{", "")
Guid = Replace(Guid, "}", "")
Guid = Replace(Guid, "-", "")
GenGuid = Guid
End Function
The other way is to just use the date/time. This will only be useful if these are created one at a time on a single machine. If you're passing the program around to a bunch of people, you might have conflicts. But it could be pretty small (14 characters). Such as 20070815094815. You could even eliminate the century and possibly the seconds to get it down to 10 characters. Or you could just have the value of a field be =now() and then set the format to "number". You will get something like 39309.41. This is a textual version:
=TEXT(YEAR(NOW()),"0000")&TEXT(MONTH(NOW()),"00"&TEXT(DAY(NOW()),"00")) & TEXT(HOUR(NOW()),"00") & TEXT(MINUTE(NOW()),"00") & TEXT(SECOND(NOW()),"00")
The big trick will be that you only want to generate this number once, not every time the sheet recalculates.
You can have a macro run at the load of a file using the Workbook_Open() event. I suggest keeping another (hidden) field with a flag to indicate if you've generated the data for this spreadsheet yet or not. Save the spreadsheet with a 0 in it, and when someone loads it and the macro runs for the first time, set it to 1 and create the unique ID. Then everytime it is loaded and the macro runs, it will see a 1 in the field and know not to overwrite what was generated originally. Good luck!