Я пришел сюда поздно, но вернувшись к исходному вопросу, почему бы просто не использовать поисковые запросы?
Pattern p = Pattern.compile("(?<=\\w)(?=\\W)|(?<=\\W)(?=\\w)");
System.out.println(Arrays.toString(p.split("'ab','cd','eg'")));
System.out.println(Arrays.toString(p.split("boo:and:foo")));
output:
[', ab, ',', cd, ',', eg, ']
[boo, :, and, :, foo]
EDIT: То, что вы видите выше, что появляется в командной строке при запуске этого кода, но теперь я вижу, что это немного запутанно. Трудно отслеживать, какие запятые являются частью результата и которые были добавлены Arrays.toString()
. Подсветка синтаксиса SO также не помогает. В надежде на то, что подсветка будет работать с me вместо меня, вот как эти массивы будут выглядеть, я объявляю их в исходном коде:
{ "'", "ab", "','", "cd", "','", "eg", "'" }
{ "boo", ":", "and", ":", "foo" }
Надеюсь, что это легче читать. Спасибо за хэдз-ап, @finnw.
Я бы предположил, что это связано с тем, как вы установили массив, который будет генерировать массив 2D
, а Criteria1:=myArray
ожидает массив 1D
.
Если ваши данные находятся в столбце, вы можете использовать
With Application
myArray = .Transpose(myfilteredgroup.SpecialCells(xlCellTypeVisible))
End With
, а если это строка, то использовать
With Application
myArray = .Transpose(.Transpose(myfilteredgroup.SpecialCells(xlCellTypeVisible)))
End With