# How do I delete empty cells in a 2D array.

## Recommended Posts

I have a

```Global \$aResult[0][2]

For \$i = 0 to UBound(\$aNames) -1
_ArrayDisplay(\$aUserInfo)
_ArrayConcatenate(\$aResult, \$aUserInfo, 1)
Next```

How can I delete empty records?

Yours sincerely

Kenneth.

• Replies 40
• Created

#### Posted Images

Loop through the array from the end to the start und use _ArrayDelete to get rid of empty cells.

My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2022-02-19 - Version 1.6.1.0) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts
OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki
Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki
PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki

Standard UDFs:
Excel - Example Scripts - Wiki
Word - Wiki

Tutorials:
WebDriver - Wiki

##### Share on other sites

Valnurat,

Just for grins...

```#include <array.au3>

Local \$aArray = [[1, 2, 3], ['', '', ''], [4, 5, 6], [7, 8, 9, 0], ['', '', 'a', 'b'], [''], ['last row first cell']]

_ArrayDisplay(\$aArray)

For \$i = UBound(\$aArray) - 1 To 0 Step -1
For \$j = 0 To UBound(\$aArray, 2) - 1
If \$aArray[\$i][\$j] <> '' Then ExitLoop
Next
If \$j - 1 = UBound(\$aArray, 2) - 1 And \$aArray[\$i][\$j - 1] = '' Then _ArrayDelete(\$aArray, \$i)
Next

_ArrayDisplay(\$aArray)```

kylomas

Forum Rules         Procedure for posting code

"I like pigs.  Dogs look up to us.  Cats look down on us.  Pigs treat us as equals."

- Sir Winston Churchill

##### Share on other sites

Exactly what I suggested above

My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2022-02-19 - Version 1.6.1.0) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts
OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki
Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki
PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki

Standard UDFs:
Excel - Example Scripts - Wiki
Word - Wiki

Tutorials:
WebDriver - Wiki

##### Share on other sites

@water - Yes, just #@\$%# around...nice sunny day here in central US...

Forum Rules         Procedure for posting code

"I like pigs.  Dogs look up to us.  Cats look down on us.  Pigs treat us as equals."

- Sir Winston Churchill

##### Share on other sites

My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2022-02-19 - Version 1.6.1.0) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts
OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki
Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki
PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki

Standard UDFs:
Excel - Example Scripts - Wiki
Word - Wiki

Tutorials:
WebDriver - Wiki

##### Share on other sites

```#include <array.au3>

Local \$aArray = [[1, 2, 3], ['', '', ''], [4, 5, 6], [7, 8, 9, 0], ['', '', 'a', 'b'], [''], ['last row first cell']]

msgbox(0 , '' , stringstripWS(StringRegExpReplace(_ArrayToString(\$aArray) , "\|\|+" , " ") , 4))```

yall don't #@\$\$\$%# around nearly enough

Edited by iamtheky

```,-. .--. ________ .-. .-. ,---. ,-. .-. .-. .-.
|(| / /\ \ |\ /| |__ __||| | | || .-' | |/ / \ \_/ )/
(_) / /__\ \ |(\ / | )| | | `-' | | `-. | | / __ \ (_)
| | | __ | (_)\/ | (_) | | .-. | | .-' | | \ |__| ) (
| | | | |)| | \ / | | | | | |)| | `--. | |) \ | |
`-' |_| (_) | |\/| | `-' /( (_)/( __.' |((_)-' /(_|
'-' '-' (__) (__) (_) (__)```

##### Share on other sites

10 hours ago, iamtheky said:
```#include <array.au3>

Local \$aArray = [[1, 2, 3], ['', '', ''], [4, 5, 6], [7, 8, 9, 0], ['', '', 'a', 'b'], [''], ['last row first cell']]

msgbox(0 , '' , stringstripWS(StringRegExpReplace(_ArrayToString(\$aArray) , "\|\|+" , " ") , 4))```

yall don't #@\$\$\$%# around nearly enough

How do I use this? How do I put this back to an array?

Yours sincerely

Kenneth.

##### Share on other sites

EDIT: just answering the last question without regard to whether or not the output should be a 1D or 2D array.  If you liked the output that @iamtheky created and just want it in an array then this should work it assigns the string to a variable that splits the string back into an array using carriage returns with line feeds as the delimiter.

```#include <array.au3>

Local \$aArray = [[1, 2, 3], ['', '', ''], [4, 5, 6], [7, 8, 9, 0], ['', '', 'a', 'b'], [''], ['last row first cell']]
\$newArray=StringSplit(stringstripWS(StringRegExpReplace(_ArrayToString(\$aArray) , "\|\|+" , " ") , 4),@CRLF)
_ArrayDisplay(\$newArray)```

Edited by Jfish

Build your own poker game with AutoIt: pokerlogic.au3 | Learn To Program Using FREE Tools with AutoIt

##### Share on other sites

Ok, but this just end up in 1D array. It has to be in a 2D array.

Yours sincerely

Kenneth.

##### Share on other sites

I don't understand this request. Are you trying to delete empty rows in a 2D array? Deleting empty cells is impossible without also deleting rows or columns.

Edited by czardas
##### Share on other sites

also, why don't you check for empty records before the  _ArrayConcatenate() ?

Chimp

small minds discuss people average minds discuss events great minds discuss ideas.... and use AutoIt....

##### Share on other sites

46 minutes ago, Chimp said:

also, why don't you check for empty records before the  _ArrayConcatenate() ?

That would be cheating.  Too easy.

##### Share on other sites

17 hours ago, czardas said:

I don't understand this request. Are you trying to delete empty rows in a 2D array? Deleting empty cells is impossible without also deleting rows or columns.

My mistake. I will ofcourse delete rows. Just my bad words of choice.

17 hours ago, Chimp said:

also, why don't you check for empty records before the  _ArrayConcatenate() ?

And if I want to do that. How should I do that? Is there a UDF for this?

Yours sincerely

Kenneth.

##### Share on other sites

Do not use _ArrayConcatenate but loop through \$aUserInfo and only write non blank rows to \$aResult.

My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2022-02-19 - Version 1.6.1.0) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts
OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki
Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki
PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki

Standard UDFs:
Excel - Example Scripts - Wiki
Word - Wiki

Tutorials:
WebDriver - Wiki

##### Share on other sites

Ok. I will do that.

Yours sincerely

Kenneth.

##### Share on other sites

On 22/3/2017 at 8:12 AM, Valnurat said:

.... And if I want to do that. How should I do that? Is there a UDF for this? ....

I don't know what exactly is returned by the _AD_GetObjectsInOU() function , (emmm... sorry @water ) , expecially when there is not data returned, anyway if you have only to scan all records to see if are all empty then something like this should do (not tested):

```Global \$aResult[0][2]
Local \$aUserInfo

For \$i = 0 To UBound(\$aNames) - 1
\$aUserInfo = _AD_GetObjectsInOU(\$aNames[\$i], "", "", "displayName,distinguishedName")
If _IsNotEmpty(\$aUserInfo) Then ; there is data in the record?
; _ArrayDisplay(\$aUserInfo)
_ArrayConcatenate(\$aResult, \$aUserInfo, 1)
EndIf
Next

; returns True if record contains data otherwise returns False
Local \$iSum = 0
For \$x = 1 To UBound(\$aData) - 1
\$iSum += \$aData[\$x] <> "" ; count not empty fields
Next
Return \$iSum > 0 ; returns true if record is not empty
EndFunc   ;==>_IsNotEmpty```

Chimp

small minds discuss people average minds discuss events great minds discuss ideas.... and use AutoIt....

##### Share on other sites

Or you could modify the LDAP query so it only returns records where displayname<>""

My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2022-02-19 - Version 1.6.1.0) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts
OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki
Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki
PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki

Standard UDFs:
Excel - Example Scripts - Wiki
Word - Wiki

Tutorials:
WebDriver - Wiki

##### Share on other sites

Here is the _AD_GetObjectsInOU with the proper LDAP query that should get you what you need.  As mentioned by water.  This query only finds user accounts, and not computer accounts.

`\$aUserInfo = _AD_GetObjectsInOU(\$aNames[\$i], "(&(objectCategory=Person)(objectclass=user)(displayName=*))", "", "displayName,distinguishedName")`

Here is some info on using LDAP Queries.

##### Share on other sites

Ok. I will try a different approach.

`\$aUserInfo = _AD_GetObjectsInOU("OU=company,DC=ad,DC=company,DC=org", "(&(objectCategory=Person)(objectclass=user)(sAMAccountName=" & \$aNames[\$i] & "*))", "", "displayName,distinguishedName")`

But the result of this ends up with users that I'm not interested in. I would like to avoid where "TransferZone" is exists in distinguishedName.

Is it possble to add an extra filter?

Yours sincerely

Kenneth.

## Create an account

Register a new account

• ### Similar Content

• #### ControlClick chooses the wrong context menu item when I provide position of the item

By Cod,

• 0 replies
• 202 views
• #### Script Fails when EXE, runs as au3

By noellarkin,

• 2 replies
• 268 views
• #### Setting timers with WinApi and callbacks functions - wrong number of params

By Miliardsto,

• 3 replies
• 399 views
• #### small own editor - (Moved)

By dsm-sas,

• 3 replies
• 328 views

By JohnnyTries,

• 4 replies
• 473 views
×

• Wiki

• Back

• #### Beta

• Git
• FAQ
×
• Create New...