入力規則とDate()関数で年月日を記入する実験 LibreOfficeCalc [LibreOffice Calc関数]
入力規則とDate()関数で年月日を記入する実験
再生できない場合、ダウンロードは🎥こちら
入力規則
- 事前に、年、月、日 用のデータを作成する
- メニューバー→データ→入力規則
- 入力値の種類 セルの範囲
- ソース 作成したデータの範囲を選択
- 年,月、日それぞれ入力規則を作成
Date関数 DATE(年,月,日)
- A2セルの数式 =DATE(C3,D3,E3)
- A2の書式を日付にする
マクロを作成し入力規則で選択した該当年月日のセルを選択する
- 作成したマクロをコントロールボタンに割り当てる
- 操作方法
- 年月日を入力規則で入力しマクロを実行するためにコントロールボタンを押す
- 指定した年月日が選択される
Sub DateFind()
'A2セルの値(日付)でA列の同じ日付のセルをセレクトする実験
'
'2014/4/14
'
Dim oCell1,oCell2,EndRow as long
Dim oSheet as object
Dim oRange as object
Dim oCursor as object
'B2セルの値(日付シリアル値)を変数oCell1に代入
oCell1=ThisComponent.CurrentController.ActiveSheet.getCellByPosition(0,1)
' print oCell1.value
'A列の最終行
oSheet = ThisComponent.CurrentController.Activesheet
oRange = oSheet.getCellRangeByName("A2")
oCursor = oSheet.createCursorByRange(oRange)
oCursor.gotoEndOfUsedArea(True)
EndRow=oCursor.Rows.Count
' print endRow
'A列を4行目から調べる
for i=4 to EndRow '最終行まで
oCell2=oSheet.getCellByPosition(0,i)
' oCell2=int(oCell2.value)
' print int(oCell2.value),oCell1.value
if oCell1.value=oCell2.value then
ThisComponent.CurrentController.select(oCell2) '一致したらセル選択
Exit Sub
else
End if
next i
msgbox "該当する日付が有りません!"
End Sub
サーチ関数で正規表現を使い文字列操作 LibreOffice Calc関数 [LibreOffice Calc関数]
サーチ関数で正規表現を使い文字列操作 LibreOffice Calc関数
- 文書で解説するのがめんどうなので・・・・・
-
'正規表現 ”[:digit:]” 数字 0-9まで -
'=SEARCH("[:digit:]","ABC123") = 4 左から数えて4番目 -
'=LEFT("ABC123",SEARCH("[:digit:]","ABC123")-1) = ABC 初めに見つかった数字の位置より左側 '=RIGHT("ABC123",LEN("ABC123")-SEARCH("[:digit:]","ABC123")+1) = 123 初めに見つかった数字の位置より右側 '=LEN("ABC123") = 6 文字数 -
東京都港区港町5ー5ー5 '=LEFT(A12,SEARCH("[:digit:]",A12)-1) = 東京都港区港町 -
東京都港区港町1-1-1 '=IF(ISERROR(SEARCH("[:digit:]",A12)),"",LEFT(A12,SEARCH("[:digit:]",A12)-1)) = 東京都港区港町 ISERROR(SEARCH(“[:digit:]”,A12=1 TRUE=1 '=IF(ISERROR(SEARCH("[:digit:]",A2)),"",RIGHT(A12,LEN(A12)-SEARCH("[:digit:]",A12)+1)) = 5ー5ー5 -
東京都港区港町5ー5ー5 を数字の5より前の文字列、5より後の文字列に編集 エラー対策と
全角を半角に
ASC()'=IF(ISERROR(SEARCH("[:digit:]",ASC(A12))),"",LEFT(ASC(A12),SEARCH("[:digit:]",ASC(A12))-1)) = 東京都港区港町 '=IF(ISERROR(SEARCH("[:digit:]",ASC(A12))),"",RIGHT(ASC(A12),LEN(ASC(A12))-SEARCH("[:digit:]",ASC(A12))+1)) = 5ー5ー5 - FIND()関数では正規表現はつかえない
- ISERROR()=TRUE はNG
- ISERROR()=1,ISERROE() はOK
そのうちまとめるつもり
列の最終行の値を調べる Lookup LibreOffice Calc [LibreOffice Calc関数]
列の最終行の値を調べる Lookup LibreOffice Calc
上図の説明ではない、Lookupの例の説明
- =LOOKUP(10^12,Sheet1.G5:G1000) シート1の範囲G5:G1000の入力のある最終行の値
- Excelでは、=Lookup(10^12,sheet1!G5:G1000) 違ってるかも!
- 10^12はおまじない?
- 他のシートを参照する時はシート名は必要、sheet1は省略可、
- ExcelのG:Gのように列全体を指定する事は出来ない(たぶん?)
- 行の最終行は1,048,576
- 列の最終列は1,024
- 他ブックの参照は出来ないらしい
- 他ブックを利用する時は、外部デートへのリンクを利用する
名前で範囲指定
- Lookupの範囲指定を名前で指定
So-netブログ投稿日からハイパーリンクを作成 LibreOffice Calc [LibreOffice Calc関数]
So-netブログ投稿日からハイパーリンクを作成 LibreOffice Calc
F5の式 =IF(B5="","", HYPERLINK($B$1 & TEXT(B5,"yyyy-mm-dd") & IF(C5="","","-" & C5), "URL"))
上図のように、
- B1にブログのURL(トップページ)を記入 例 http://j11.blog.so-net.ne.jp
- B列に投稿日を設定
- C列に記事番号を設定 、、当日1つ目の記事は空、2つ目の記事は 1 ・・・・・・
- D列に記事タイトルを設定
- E列にカテゴリーを設定
- F列にハイパーリンクを作成
使用する関数
- IF() , HYPERLINK() , TEXT()
セルF5の式
- =IF(B5="","", HYPERLINK($B$1 & TEXT(B5,"yyyy-mm-dd") & IF(C5="","","-" & C5), "URL"))
- 初めの=IF(B5="","", は、B5セルが空白なら空白にする
- HYPERLINK( URL , "表示文字列")
- 表示文字列は"URL"とする、 文字列は任意
- $B$1 はセルB1の絶対参照でブログトップのURL 例 http://j11.blog.so-net.ne.jp
- TEXT(B5,"yyyy-mm-dd") ,B5は投稿日,"yyyy-mm-dd"は2013-10-17にフォーマットし表示
- IF(C5="","","-" & C5) 、C5セルが空白なら空白、記入されていればC5の内容 例 2013-10-17-1 ' 2番目の記事
ハイパーリンクを開くときは、Ctrlキーを押しながらクリック
式はF5コピーして、F6以下に貼り付け