質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
LibreOffice Calc

LibreOffice Calcは、様々なOSで利用可能なオフィススイートであるLibreOfficeに含まれるオープンソースの表計算ソフトです。テンプレートや背景色、枠線といった書式設定の各項目を柔軟で設定することができます。

Q&A

解決済

1回答

830閲覧

「奇数行目の数値から8を引き、8以上なら偶数行目に代入」を繰り返したい

hisatugu

総合スコア2

LibreOffice Calc

LibreOffice Calcは、様々なOSで利用可能なオフィススイートであるLibreOfficeに含まれるオープンソースの表計算ソフトです。テンプレートや背景色、枠線といった書式設定の各項目を柔軟で設定することができます。

0グッド

0クリップ

投稿2020/09/10 00:09

前提・実現したいこと

LibreOfficeでのCalcマクロについて
「奇数行目の数値から8を引き、8以上なら偶数行目に代入」を
奇数行目スタート3行目から偶数行目エンド40行目まで行いたい

発生している問題・エラーメッセージ

3行目の数値から8を引き、8以上なら4行目に代入している式です

これを偶数行すべてに行いたいので教えてください

数値の有る行は3から39、代入先は4から40行目です

該当のソースコード

LibreOfficeマクロ

REM ***** BASIC *****
sub minus
'8時間引く

Dim f As Single
for f = 1 to 31

x = ThisComponent.Sheets(0).getCellByPosition(f, 2).Value

If x > 8 Then
b = x - 8
ElseIf x < 8 then
b = 0
Else
b = 0
EndIf

ThisComponent.Sheets(0).getCellByPosition(f,3).Value=b

next f

End Sub

試したこと

知恵袋では
for f = 2 to 38 step 2
ThisComponent.Sheets(0).getCellByPosition(f + 1,3).Value=b
ではどうかと回答が有りますが、右方向にステップするので…

補足情報(FW/ツールのバージョンなど)

LibreOfficeバージョン: 6.2.7.1 (x64)
Calc: threaded

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

REM ***** BASIC *****
sub minus
'8時間引く

Dim f As Single
Dim g As Single

for f = 1 to 31
for g = 2 to 40 step 2

x = ThisComponent.Sheets(0).getCellByPosition(f, g).Value

If x > 8 Then
b = x - 8
ElseIf x < 8 then
b = 0
Else
b = 0
EndIf

ThisComponent.Sheets(0).getCellByPosition(f,g+1).Value=b

next g
next f

End Sub

投稿2020/09/10 00:20

hisatugu

総合スコア2

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問