markyrocks Posted November 12, 2020 Share Posted November 12, 2020 7 minutes ago, Atrax27 said: think theres probably a way to count the number (12) without using the _FileCountLines function, but I can't easily see it. $_FileRead = FileReadToArray ($_FilePath) Local $iCountLines = $_FileRead[0] ;$FRTA_NOCOUNT (0) - array is 0-based use UBound() to get size ;$FRTA_COUNT (1) - array count in the first element. (default)<~~~~~~~~~~~~~~~~~~~~~~~~~~~~flags ; read the function description it has everything you need to know about it . note the flags Spoiler "I Believe array math to be potentially fatal, I may be dying from array math poisoning" Link to comment Share on other sites More sharing options...
Nine Posted November 12, 2020 Share Posted November 12, 2020 To simplify : #include <Constants.au3> #include <Array.au3> $_FilePath = '1.txt' $_FileRead = FileReadToArray ($_FilePath) ;_ArrayDisplay($_FileRead) $Txt = "Dim $array[" & UBound($_FileRead) & "] = [" & '"' & _ArrayToString($_FileRead,CHR(34)&","&CHR(34)) & '"]' ClipPut($Txt) MsgBox($MB_SYSTEMMODAL, "", $Txt); may not need this but here just so I can quickly see what it's showing me Atrax27 1 “They did not know it was impossible, so they did it” ― Mark Twain Spoiler Block all input without UAC Save/Retrieve Images to/from Text Monitor Management (VCP commands) Tool to search in text (au3) files Date Range Picker Virtual Desktop Manager Sudoku Game 2020 Overlapped Named Pipe IPC HotString 2.0 - Hot keys with string x64 Bitwise Operations Multi-keyboards HotKeySet Recursive Array Display Fast and simple WCD IPC Multiple Folders Selector Printer Manager GIF Animation (cached) Screen Scraping Multi-Threading Made Easy Link to comment Share on other sites More sharing options...
GokAy Posted November 12, 2020 Share Posted November 12, 2020 Hey again, Thanks for the "thanks" Since you didn't say if the macro helps you creating your data, can you use it? I just used my imagination for possible cases, of course that might not be the case. If you would like to use it, does it need any modifications? Anything you want to be added/changed? - Just noticed, you also have numbers, which may be formatted. Changing format of the Data sheet A column to text, and creating strData from range().text instead of range().value fixes that too. You get what you see this way. Uploading the modified xlsm. And it should be creating the array you want, if you add that one line of AutoIt code. Then do whatever with the array. Why add extra steps to put commas and strip them away later? or when double quotes are prepended/appended The test au3 is: #Region ;**** Directives created by AutoIt3Wrapper_GUI **** #AutoIt3Wrapper_Outfile_type=a3x #AutoIt3Wrapper_Outfile=file_read_to_array_test.a3x #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI **** #include <Array.au3> test() func test() Local $aTest = FileReadToArray(@DesktopDir & "\array_list.txt") _ArrayDisplay($aTest,"Test") EndFunc test.xlsm Atrax27 1 Link to comment Share on other sites More sharing options...
Atrax27 Posted November 12, 2020 Author Share Posted November 12, 2020 (edited) Added a little functionality that greatly helps my particular workflow. I'm just so happy you guys 1) opens the "Array.txt" file 2) I paste my new list (directly from excel) into this text file 3) I save the file and close it 4) Boom, magic, done. I'm in love. #include <Constants.au3> #include <Array.au3> Opt("WinTitleMatchMode",2) ShellExecute("Notepad.exe", @scriptDir & "\ARRAY.txt") Sleep(500) WinWaitClose("ARRAY.txt") $_FilePath = @scriptDir & "\ARRAY.txt" $_FileRead = FileReadToArray ($_FilePath) ;_ArrayDisplay($_FileRead) $Txt = "Dim $array[" & UBound($_FileRead) & "] = [" & '"' & _ArrayToString($_FileRead,CHR(34)&","&CHR(34)) & '"]' ClipPut($Txt) MsgBox($MB_SYSTEMMODAL, "", $Txt) Edited November 12, 2020 by Atrax27 Link to comment Share on other sites More sharing options...
Atrax27 Posted November 12, 2020 Author Share Posted November 12, 2020 Thanks GokAy, I think because I pull from so many different spreadsheets and different files, adding that data into an interim spreadsheet would just gum up everything, but I do appreciate your help thank you. Link to comment Share on other sites More sharing options...
GokAy Posted November 12, 2020 Share Posted November 12, 2020 Fair enough, want to add though 😛 This can be done perhaps, to further streamline it. Name or number of the spreadsheet that we copy the data doesn't matter. Instead of deleting and writing all data at once, everytime you select and copy them to data sheet, they are appended to your "array.txt", and Data sheet is cleaned. Advantages would be; you control the order of data to be appended to "array.txt" (copy range1 from workbook1, manual copy/paste from other non-Excel file, copy range2 from workbook2, switch back to workbook1 and copy range3, etc). Spreadsheets would become trivial, and you can also copy/paste from your other non-Excel sources. Just thinking here, what if I had to do the same task. Anyway, if you are happy, all is good. If you consider further tweaking let me know. We can manage whatever.. Link to comment Share on other sites More sharing options...
rudi Posted November 12, 2020 Share Posted November 12, 2020 10 hours ago, rudi said: Some notes for my examples: Some notes on my examples: When you mark just one collumn in an Excel Spreadsheet and press CTRL+C, you will find in the clipboard all the values delimited by @CRLF. Instead of my lines $s1d= <string-definition> you could also use $s1D=ClipGet() Same is fact for the example for a 2D array: When you mark a range of cells in Excel and copy it to your clipboard, the values of one line are @TAB delimited, the lines are delimeted by @CRLF Same as above is fact for the $s2D string value: Instead of filling it manually with $s2D=<string-definition> you can use $s2D=ClipGet() ... just after you've copied the marked cell range in Excel to your clipboard. 10 hours ago, rudi said: expandcollapsepopup expandcollapse popup#include <Array.au3> #include <Debug.au3> ; 1D, just one collumn data $s1D="Liam" & @crlf & _ "Olivia" & @crlf & _ "Noah" & @crlf & _ "Emma" & @crlf & _ "Oliver" & @crlf & _ "Ava" & @crlf & _ "William" & @crlf & _ "Sophia" & @crlf & _ "Elijah" & @crlf & _ "Isabella" & @crlf & _ "James" & @crlf & _ "Charlotte" & @crlf & _ "Benjamin" & @crlf & _ "Amelia" & @crlf & _ "Lucas" & @crlf & _ "Mia" & @crlf & _ "Mason" & @crlf & _ "Harper" & @crlf & _ "Ethan" & @crlf & _ "Evelyn" $aWork=StringSplit($s1D,@CRLF,1) _DebugArrayDisplay($aWork) ; 2D sample data from Excel $s2D="XL Line1 Col1" & @TAB & "XL Line1 Col2" & @TAB & "XL Line1 Col3" & @CRLF & _ "XL Line2 Col1" & @TAB & "XL Line2 Col2" & @TAB & "XL Line2 Col3" & @CRLF & _ "XL Line3 Col1" & @TAB & "XL Line3 Col2" & @TAB & "XL Line3 Col3" & @CRLF & _ "XL Line4 Col1" & @TAB & "XL Line4 Col2" & @TAB & "XL Line4 Col3" Dim $a2Work [1][3] ; Initial Array, correct number of col, "empty-line-0" _ArrayAdd($a2Work,$s2D,0,@TAB,@CRLF) $a2Work[0][0]=UBound($a2Work)-1 _DebugArrayDisplay($a2Work) Atrax27 1 Earth is flat, pigs can fly, and Nuclear Power is SAFE! Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now