Что нового

Работа с Excel, переход по ячейкам в строке

mr.Gbabak

Осваивающий
Сообщения
257
Репутация
24
Возник вопрос, а как сделать циклический переход по ячейкам в строке, :stars:
К примеру от B6 до BZZZ6?
 

Cornet

Знающий
Сообщения
41
Репутация
6
А вам очень критично обращаться к ячейкам по буквам?
Проще использовать R1C1, и к B6 обратится так:
Код:
_ExcelWriteCell ( $oExcel, $sValue, 6 , 2)
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,323
mr.Gbabak [?]
как сделать циклический переход по ячейкам в строке
Что значит переход? Их надо активировать, получать их значение или еще что-то?
 
Автор
M

mr.Gbabak

Осваивающий
Сообщения
257
Репутация
24
madmasles
Мне надо будет получать значение, и записывать его в другое место, на другом листе. Просто таблица, порядка 100 столбцов и 3000 строк.
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,323
mr.Gbabak [?]
таблица, порядка 100 столбцов и 3000 строк
Прочитайте ее в массив функцией
Код:
_Excel_RangeRead()
и делайте дальше с ней то, что нужно.
 
Автор
M

mr.Gbabak

Осваивающий
Сообщения
257
Репутация
24
Или я плохо объяснил, или я Вас не понимаю.
Мне нужно, чтобы функция считывала из одной ячейки, и записывала в другую.
По одной ячейке я могу написать:

Код:
#include <Array.au3>
#include <Excel.au3>
#include <MsgBoxConstants.au3>
Local $sWorkbook = @ScriptDir & "\1.xls"
Local $oExcel = _Excel_Open()
Local $oWorkbook = _Excel_BookOpen($oExcel, $sWorkbook)
$oWorkbook = _Excel_BookAttach($sWorkbook)

$read = _Excel_RangeRead($oWorkbook, 'лист1', 'E6');считывается из столбца

_Excel_RangeWrite($oWorkbook, 'лист1', $read,'A2');записывается в строку

$read = _Excel_RangeRead($oWorkbook, 'лист1', 'E7');считывается из столбца
_Excel_RangeWrite($oWorkbook, 'лист1', $read,'A3');записывается в строку

Вопрос собственно и стоит, как считать из столбца в диапазоне E6-E300, и записать в строку A2-AZZ2?
Мне именно не понятно, как задать условие циклу For...To...Step, ведь в Excel буквенно-цифровой адрес.
OffTopic:
Цикл же прибавление букав не поймет? :-\
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
Вам же написали, считывайте сразу весь диапазон
 

Cornet

Знающий
Сообщения
41
Репутация
6
Обновил Autoit, оказывается они там всю библиотеку перелопатили. Ладно хоть себе пишу без библиотек ;)
mr.Gbabak сказал(а):
Мне именно не понятно, как задать условие циклу For...To...Step, ведь в Excel буквенно-цифровой адрес.
как-то так:
Код:
#include <Excel.au3>

For $i = 1 To _Excel_ColumnToNumber("AZZ")
	ConsoleWrite(_Excel_ColumnToLetter($i)&"2" & "   ")
Next

Но как вам и советуют лучше считывать и записывать целым диапазоном, гораздо быстрее будет.


Добавлено:
Сообщение автоматически объединено:

Диапазоном писать так:
Код:
#include <Array.au3>
#include <Excel.au3>
#include <MsgBoxConstants.au3>
Local $sWorkbook = @ScriptDir & "\1.xlsx"
Local $oExcel = _Excel_Open()
Local $oWorkbook = _Excel_BookOpen($oExcel, $sWorkbook)
$oWorkbook = _Excel_BookAttach($sWorkbook)

$read = _Excel_RangeRead($oWorkbook, 'лист1', 'E6:E300')
_ArrayTranspose($read)
_Excel_RangeWrite($oWorkbook, 'лист1', $read,'A2')
 
Верх