パソコン・インターネット

Excel で別の文字列をセル内改行で付け加えて表示させる。

この記事は自分用の覚書です。
(Windows 10 Pro 64ビット + Excel2016 Office365 Business サブスクリプション  バージョン1806(ビルド10228.20080)

■数式で処理する。18年7月9日追記

T.N さん。

先に、ユーザー定期書式を使えばできると書きましたが、数式で処理できます。

「仕事で使うファイルは、できるかぎり誰もがわかりやすく作っておく」という原則からすると、数式を使ったやり方のほうが、ぱっと見て何をしているかの理解しやすさが少しでも高いと思います。

="会長"&CHAR(10)&VLOOKUP(D5,A2:B3,2,FALSE)

といった数式になります。
セルの書式設定で「配置」タブを開き、「折り返して全体を表示する」にチェックしておくのは同じです。(なお、数式でのやり方のほうも■注意の内容は同じです。)

Hyoujikeishiki_cellnaikaigyou08

CHAR 関数は、使っているコンピュータの文字セットから、引数で指定した番号の文字を返します。

Widowsでの CHAR(10) は、改行コードを返します。

数式を見ると、「文字列・CHAR関数の戻り値・VLOOKUP関数の戻り値の3つのものを、& で結合している」とわかります。

先のやり方だと、「ユーザー定義書式」を知っていて、さらに Ctr + J のショートカットを知っていなければ、何をしているのかを理解できません。

消さなければならないものではないので、前の記事は以下に残しておきますが、誰にでもわかりやすくしておくには、この場合は数式を使うやり方を採ったほうがよいと思います。


T.N さん。

数式で文字列を抜き出してきているセルに、別の文字列をセル内改行の形で付け加えて表示させるやり方がわかりました。ユーザー定義書式を使ってできます。

Hyoujikeishiki_cellnaikaigyou01

1. セルの書式設定で「配置」タブを開き、「折り返して全体を表示する」にチェック
ここのチェックを必ず入れること。

2. 「表示形式」タブで「ユーザー定義」を選択。

3. 「種類」の欄が「G/標準」になっているのを消して、「@」を入力

4. 「@」の左右に表示したい文字列を入力

Hyoujikeishiki_cellnaikaigyou02

5. 入力した文字列と「@」の間にカーソルを置いて、Ctrl+J を押す。
Ctrl+J は改行コードを入れるショートカット。

6. カーソルを置いた位置に改行が入る。
改行マークなどの表示は何も見えない。

Hyoujikeishiki_cellnaikaigyou03

7. 「OK」をクリックすると、手順 4. で入力した文字列がセル内改行で表示される。
(画像では見やすいように中央揃えにしてあります。)

Hyoujikeishiki_cellnaikaigyou01_2


■注意

セルを F2 やダブルクリックで編集モードにしてから Enter キーを押すと、数式が表示されてしまう。

Hyoujikeishiki_cellnaikaigyou04

1. 表示形式で「標準」をいったん選んで OK をクリック。
セル内改行で表示させていた文字列が消えて数式だけが表示される。

Hyoujikeishiki_cellnaikaigyou05

2. セルを編集モードにして Enter キーを押す。
数式が返してくる文字列だけが表示される。

Hyoujikeishiki_cellnaikaigyou06

3. あらためてユーザー定義書式から、セル内改行で表示させる文字列を伴った書式を選ぶ。

Hyoujikeishiki_cellnaikaigyou07

| | コメント (0) | トラックバック (0)

Excel で2つのシートでセルの値を比較して検算する。

この記事は自分用の覚書です。
(Windows 10 Pro 64ビット + Excel2016 Office365 Business サブスクリプション  バージョン1805(ビルド9330.2087)

N.T さん。

2つのシートでセルの値を比較して検算するプロシージャです。

■課題

  • 1つのブックのなかで隣り合っている2つのシートにそれぞれ表が1つ載っている。それら2つの表の値が全く同じであるかを比較して検算する作業を楽にしたい。
  • ブックのなかのシートは3枚以上になることもある。
  • G列3行目のセルから比較していく。
  • 表の行数・列数はそのときどきで変わる。
  • どのセルの値が違っているかを、ぱっと見てわかるようにしたい。

隣り合っている2枚のシートということでしたので、右側のシートのさらに右に検算用のシートを挿入して処理するようにしました。
(このコードでは、離れたシート同士を比較することはできません)

2つの表で値が異なっているセルがあったら、検算用のシートで該当するセルを赤く塗るようにしました。

最後に、できあがった検算用シートの表示倍率を20%にしてあります。
もらったサンプルがけっこう大きな表だったので、20%で全体を眺めることができたもので。そこに赤いセルがなかったら、2つのシートにある表は全く同じということです。
(表示倍率を変えたいときは、最後の ActiveWindow.Zoom = 20 の行で 20 を変えてください。)

検算用のシートのシート名は、「検算用_左端のシートから数えた枚数」といった書式になります。
シートが2枚だったら、「検算用_3」というシートが右端にできます。

シートが3枚以上になることもあるということですが、比較したいシートをどうやって扱えば比較できるか、私のスキルではわかりませんでした。

幸い、ブックが出来上がった時点では、比較したいシート同士は隣り合って並んでいるということだったので、「比較するシートを左右に並べて、右側のシートを開いていることを確認してからこのプロシージャーを実行する。」ということにさせてください。

スキル不足ですみません。

G列3行目のセルから比較していくとのことでしたので、FOR...NEXTステートメントの繰り返しの初期値は、7 と 3 になっています。
コメントの中にも書いていますが、比較を始めたいセルの位置が変わったら、その部分を合わせて変えてください。

また、表の列数と行数がその都度変わってくるということで、表の最大列数と、最大行数を、それぞれ Cells(5, Columns.Count).End(xlToLeft).Column と Cells(Rows.Count, "G").End(xlUp).Row の部分で取得しています。

Cells(5, Columns.Count) としたのは、値の抜けがないセルが行の右端まで続いているのは5行目以降だったからです。
5 を選んだ理由は特にありません。一番上の行なので 5 としたまでです。

同じ理由で、Cells(Rows.Count, "G").End(xlUp).Row としたのは、空欄でないセルが並んでいるG列を基準にしたかったからです。
空欄でないセルが並んでいれば、どの列でもよいのですが、G列のセルから比較を始めるので、G列を基準にしておくのが自然な書き方かと思います。


Sub 二つシートでセルの値を比較して検算する()
'
'比較する二つのシートが左右に並んでいて、
'右側のシートを開いていることを確認してからこのプロシージャーを実行する。
'
    Dim i As Long
    Dim j As Long
    Dim 検算用シートの位置 As Long

    ActiveSheet.Copy After:=ActiveSheet
    検算用シートの位置 = ActiveSheet.Index '■1

    '■2
    For i = 7 To Worksheets(検算用シートの位置 - 2).Cells(5, Columns.Count).End(xlToLeft).Column
        For j = 3 To Worksheets(検算用シートの位置 - 2).Cells(Rows.Count, "G").End(xlUp).Row
            If Worksheets(検算用シートの位置 - 2).Cells(j, i).Value <> Worksheets(検算用シートの位置 - 1).Cells(j, i).Value Then
                Worksheets(検算用シートの位置).Cells(j, i).Interior.Color = 255
            End If
        Next j
    Next i

    '■3
    With Worksheets(検算用シートの位置)
        .Name = "検算用シート_" & 検算用シートの位置
        .Range("A1").Select
    End With

    ActiveWindow.Zoom = 20
'
'比較する二つのシートが左右に並んでいて、
'右側のシートを開いている状態からこのプロシージャーを実行しているので、
'右側のシートをさらに右にコピーして、検算用のシートとして挿入する。
'この状態で、二つのシートと検算用シートは、セルの値がまったく同じであるはず。
'それを確認するために表の値を比較していく。
'
'■1
'挿入された検算用シートが、一番左端のシートから何枚目にあるかを、整数で取得し、変数 検算用シートの位置 に代入。
'取得した値は、検算用シートの左にある二つのシートの位置を指定するのに使う。
'
'■2
'検算用シートの位置から 2 を引くと、左に2枚目のシートを指定できる。
'1 を引くと左に1枚目(すぐ左となり)のシートを指定できる。
'
'Columnプロパティで、検算用シートから左に2枚目のシート上にある表が何列あるかを取得して、変数 i に代入する値の最終値として使っている。
'表が何列あっても対応できるようにしている。
'G列のセルから値の比較を始めたいので、変数 i の初期値は 7 にしてある。比較を始めたい列が変わったら、7 の部分をそれに合わせる。(G列は7列目)
'列数を数える基準となるセルの行が変わったら、Cells(5, Columns.Count) の 5 の部分をそれに合わせる。
'
'Rowプロパティで、検算用シートから左に2枚目のシート上にある表が何行あるかを取得して、変数 j に代入する値の最終値として使っている。
'表が何行あっても対応できるようにしている。
'3行目のセルから比較を始めたいので、変数 j の初期値を 3 にしてある。比較を始めたい行が変わったら、3 の部分をそれに合わせる。
'行数を数える基準となるセルの列が変わったら、 Cells(Rows.Count, "G") の "G" の部分をそれに合わせる。
'
'検算用シートから左に2枚目のシートと1枚目のシートのセルの値を比較して、同じでなければ、検算用シートの該当セルを赤く塗る。
'セルを赤くすることで、二つのシートの同じセルで値が異なっている(どちらかのシートでセルの値が間違っている)ことがわかるようにしている。
'
'■3
'二つのシートのセルを比較する検算の繰り返しが終わったら、
'検算用シートのシート名を「検算用シート_検算用シートの位置」に変える。
'「検算用シート_3」というようなシート名になる。
'
'検算用シートの全体が見えるように表示倍率を 20% にする。
'シート全体を見渡せるようになるので、赤いセルがあったらわかる。
'
End Sub

| | コメント (0) | トラックバック (0)

Excel でワークシートのヘッダーやフッターを一括で置換する。

この記事は自分用の覚書です。
(Windows 10 Pro 64ビット + Excel2016 Office365 Business サブスクリプション  バージョン1804(ビルド9226.2156)

■ブック内の全てのワークシートのヘッダーやフッターを、一括で全く同じ(表記も、入れる位置も全部同じ)にする。

VBA を使わないで可能。

1.シート名の上で右クリックして「すべてのシートを選択」をクリック
2.「ページレイアウト」タブからヘッダーとフッターを任意に設定

これで、全てのワークシートのヘッダーやフッターが同じになる。

■VBAで処理する。

ワークシート関数の SUBSTITUE 関数を使うプロシージャーの例

Sub ヘッダーとフッターの置換_1()
'ワークシート関数の SUBSTITUTE 関数を呼び出して使う。
    Dim i As Long
    Dim 置換前 As String, 置換後 As String '■1

    置換前 = Application.InputBox(Prompt:="置換前の文字列", Default:="置換前の文字列を入力", Type:=2) '■2
    If 置換前 = "False" Then Exit Sub '■3

    置換後 = Application.InputBox(Prompt:="置換後の文字列", Default:="置換後の文字列を入力", Type:=2) '■2
    If 置換後 = "False" Then Exit Sub '■3

    For i = 1 To Worksheets.Count '■4
        With Worksheets(i).PageSetup
            '■5
            If .LeftHeader <> "" Then .LeftHeader = WorksheetFunction.Substitute(.LeftHeader, 置換前, 置換後)

            If .CenterHeader <> "" Then .CenterHeader = WorksheetFunction.Substitute(.CenterHeader, 置換前, 置換後)

            If .RightHeader <> "" Then .RightHeader = WorksheetFunction.Substitute(.RightHeader, 置換前, 置換後)

            If .LeftFooter <> "" Then .LeftFooter = WorksheetFunction.Substitute(.LeftFooter, 置換前, 置換後)

            If .CenterFooter <> "" Then .CenterFooter = WorksheetFunction.Substitute(.CenterFooter, 置換前, 置換後)

            If .RightFooter <> "" Then .RightFooter = WorksheetFunction.Substitute(.RightFooter, 置換前, 置換後)

        End With
    Next
'
'■1
'変数「置換前」と「置換後」を String(文字列型)として宣言。
'
'■2
'Excel VBAで使える InputBox には、InputBoxメソッドとInpuBox関数がある。
'ここでは、ApplicationオブジェクトのInputBoxメソッドを使っている。
'InputBoxメソッドでは引数Typeを使える。InputBox関数では引数Typeを指定できない。
'Type:=2 の指定で、文字列のみを受け取り、返すことができる。
'ヘッダーやフッターの値を置換するので、置換の対象は常に文字列。
'(そういう意味で、変数の宣言でも、変数「置換前」と「置換後」を文字列型(Strings)として宣言している。)
'
'InputBox で受け取る値を使って数学的な計算をするわけではないので、Type:=2 の指定で文字列を受け取る指定をしておけば、
' 第4期全体会合 といったような、文字と数字が混ざっている値でも受け取れるし、
' 2018 といった純粋な数字の場合でも、どちらでも受け取れる。
'
'■3
'InputBoxメソッドの「キャンセル」がクリックされたら、このプロシージャ―を抜ける。
'InputBoxメソッドは、「キャンセル」がクリックされたら、 False(論理値) を返す。
'文字列を受け取れるように、引数Typeに「2」を指定しているので、InputBoxメソッドが返してくる False も文字列型になる。
'そこで、IFステートメントでは、FALSE をダブルコーテーションで囲んで、文字列として扱っている。
'このコードで、False をダブルコーテーションで囲っていなくて、InputoBoxメソッドの入力欄に文字列(純粋な数字ではないもの)を入力すると、
'「型が一致しません」というエラーになる。
'
'■4
'Worksheets.Count で、ブック内にワークシートが何枚あるかを取得。
'ワークシートが何枚あっても、左端から右端まで全ワークシートを対象に処理を行うために使う。
'
'■5
'ワークシート関数の SUBSTITUE 関数を呼び出して使っている。
'If ステートメントで、ヘッダー(左・中央・右)やフッター(左・中央・右)に何か入っていれば、(空欄でなければ)置換を行うようにしている。
'ヘッダーやフッターに何も入っていなければ、(空欄なら)置換の処理を始めない。
'
'同様の処理を行うコードで、With ステートメントだけを使った下記のような書き方がある。
'
'For i = 1 To Worksheets.Count
'   With Worksheets(i).PageSetup
'       .LeftHeader = WorksheetFunction.Substitute(.LeftHeader, 置換前, 置換後)
'       .CenterHeader = WorksheetFunction.Substitute(.CenterHeader, 置換前, 置換後)
'       .RightHeader = WorksheetFunction.Substitute(.RightHeader, 置換前, 置換後)
'       .LeftFooter = WorksheetFunction.Substitute(.LeftFooter, 置換前, 置換後)
'       .CenterFooter = WorksheetFunction.Substitute(.CenterFooter, 置換前, 置換後)
'       .RightFooter = WorksheetFunction.Substitute(.RightFooter, 置換前, 置換後)
'   End With
'Next
'
'上記のコードの場合、ヘッダー(左・中央・右)とフッター(左・中央・右)に
'何か値が入っていても、入ってなくても、一つのシートにつき6か所で置換を行おうとする。
'値が入っていない場合、しなくてもよい作業をしていることになる。
'
'If .LeftHeader <> "" Then .LeftHeader = WorksheetFunction.Substitute(.LeftHeader, 置換前, 置換後)
'
'のように書くことで、左・中央・右のヘッダーやフッターに何か入っている(空欄ではない)場合にだけ置換を始める。
'これによって、処理にかかる時間を With ステートメントだけを使うより短くしている。
'
End Sub


全てのワークシート関数を呼び出せるわけではない。

| | コメント (0) | トラックバック (0)

Google Apps Script でセルを操作する基本的手順

この記事は自分用の覚書です。

■GAS (Google Apps Script) のオブジェクトモデル

Spreadsheet.App オブジェクト(『Googleスプレッドシート』というアプリケーション本体)

→ Spreadsheet オブジェクト (個々のファイル)
    ↓
     → Sheet オブジェクト(ファイルの中のシート)
    ↓
     → Range オブジェクト(シート上のセル)

■GAS でセルの取得(変更)するための基本的な手順

1.Googleスプレッドシートのファイルを取得(変数への代入)
2.1. で取得したファイルのなかのシートを取得
3.2. で取得したシート上にあるセルを取得
4.3. で取得したセルの内容(値)を取得(変更)

■セルを操作する基本(サンプル)
GAS では、変数の宣言と同時に、変数への値の代入が認められている。


function sample01() {
  //1. Googleスプレッドシートのファイルを取得(変数への代入)
  var target_file = SpreadsheetApp.getActiveSpreadsheet();

  //2. 1.で取得したファイルのなかのシートを取得
  var target_sheet = target_file.getActiveSheet();

  //3. 2.で取得したシート上にあるセルを取得
  var target_range = target_sheet.getRange("A1");

  //4. 3.で取得したセルの内容(値)を取得(変更)
  var cell_atai = target_range.getValue(); //値を入力するには setValue(値)

  Logger.log(cell_atai);
}


上記スクリプトは次の書き方をしても意味は同じ。

function sample02() {
  var target_file;
  var target_sheet;
  var target_range;
  var cell_atai;

  //1. Googleスプレッドシートのファイルを取得
  target_file = SpreadsheetApp.getActiveSpreadsheet();

  //2. 1.で取得したファイルのなかのシートを取得
  target_sheet = target_file.getActiveSheet();

  //3. 2.で取得したシート上にあるセルを取得
  target_range = target_sheet.getRange("A1");

  //4. 3.で取得したセルの内容(値)を取得(変更)
  cell_atai = target_range.getValue();

  Logger.log(cell_atai);
}


・getSheetByName("シート名")
SpreadsheetクラスのgetSheetByName()メソッドを使うと、シート名を使ってシートを取得できる。

・getSheets()[0]
Spreadsheet.getSheets()メソッドでは、すべてのシートが配列として返される。
配列の1つ目の要素(添え字・インデックスの「0」)が、一番左のシートを表す。
配列は 0 から始まる。

・openById("ID")
SpreadsheetApp.openById()メソッドでは、シートのIDを指定してシートを取得する。
ID は、URL の https://docs.google.com/spreadsheets/d/xxxxxxxxxxxxxxxx/edit 中で xxxxxxxxxxxxxxxx の部分。

| | コメント (0) | トラックバック (0)

Google Apps Script でワードのファイルをゴミ箱へ移動する。

この記事は自分用の覚書です。

T.N さん。

Google Apps Script で、Googleドライブ上の指定したフォルダ内にあるワードのファイル(拡張子 docx )をゴミ箱へ移動するコードです。
(拡張子 doc は対象にしていません。)

結果として、docx 以外のファイルがフォルダのなかに残ります。
ゴミ箱へ移動するだけなので、ワードのファイルは Goofle ドライブ上から完全には消えていません。


function Word_docx_sakujo_1(){
  //変数の宣言
  var Folder_ID;
  var Hozon_Folder;
  var All_Docx;
  var Word_File;

  Folder_ID = "ここに、ファイルが保存されているフォルダのフォルダIDを入れる。"; //フォルダによって変える。フォルダを開いて、 URLの  "…/folders/" 以降の部分がフォルダID。
  Hozon_Folder = DriveApp.getFolderById(Folder_ID);
  All_Docx =  Hozon_Folder.getFilesByType(MimeType.MICROSOFT_WORD);//ゴミ箱に移動するファイルをdocxに指定。

    while(All_Docx.hasNext()){
      Word_File =All_Docx.next();
      Word_File.setTrashed(true);
    }
}


Folder_ID = "ここに、ファイルが保存されているフォルダのフォルダIDを入れる。"; //フォルダによって変える。フォルダを開いて、 URLの  "…/folders/" 以降の部分がフォルダID。
Hozon_Folder = DriveApp.getFolderById(Folder_ID);

のところは、

Hozon_Folder = DriveApp.getFolderById("ここに、フォルダのフォルダIDを入れる");

のように、フォルダIDを直に引数にして1行で書いてもよかったのですが、場合によって変更することも考えると、少しでも編集しやすくなるかなと思って変数 Folder_ID に代入するようにしてみました。

あと、pptx をゴミ箱に移動したいとなったら、MimeType.MICROSOFT_WORD を MimeType.MICROSOFT_POWERPOINT に書き換えます。xlsx なら、MimeType.MICROSOFT_EXCEL になります

他の MimeType については、Google Apps Script の REFFERENCE を参照してください。
Enum MimeType

| | コメント (0) | トラックバック (0)

Excel で漢字の読みを入力するマクロ

この記事は自分用の覚書です。
(Windows 10 Pro 64ビット + Excel2016 Office365 Business サブスクリプション バージョン1801(ビルド9001.2171)

VBA を使って、B 列に入っている漢字の読みを C 列に入力する。

セル内の漢字の読みは PHONETIC 関数で取得できるが、セルの中で読みを打って漢字に変換していないとその読みは  PHONETIC 関数で取得できない。(別のファイルからコピー貼り付けしてきた場合など。)

下記のコードは、セルの中で変換していなくても漢字の読みを取得する。
(コードを実行する場合は、読みを入力したいシートを開いておく。)

ただし、エクセルが漢字を認識するので、期待通りの読みにならない場合がある。その場合は、手作業で読みの編集が必要。
PHONETIC 関数とは違って、漢字の読み( Shift + Alt + ↑)を正しく入れても反映はされない。

Yomi_1

コードを実行した結果。

Yomi_2


Sub 漢字の読みを入力()
Dim i As Long, 文字列 As String
For i = 2 To Cells(Rows.Count, "B").End(xlUp).Row
    文字列 = Cells(i, "B")
    Cells(i, "C") = Application.GetPhonetic(文字列)
Next i
'B 列に入っている文字列のヨミを C 列に入力する。
'
'For i = 2 To Cells(Rows.Count, "B").End(xlUp).Row のコードで、
'B 列が何行あっても対応できるようにしている。
'
'B 列の値を、変数「文字列」に代入する。
'変数「文字列」を、Application オブジェクトの GetPhonetic メソッドの引数にする。
'C列のセルに GetPhonetic メソッドの実行結果を入れていく。
'
'B 列に入っている漢字の読みを、エクセルが内部的にもっている辞書と照らし合わせて認識する。
'そのため、人が期待する通りに漢字を読んでくれない場合がある。
'その場合は、手作業での調整が必要。
'
End Sub

| | コメント (0) | トラックバック (0)

Excel で「うるう年」を見つける。

この記事は自分用の覚書です。
(Windows 10 Pro 64ビット + Excel2016 Office365 Business サブスクリプション バージョン1712(ビルド8827.2148))

■考え方
ある年の2月末日が 29 日なら、その年は「うるう年」である。

月末の日にちとは、「翌月の一日(ついたち)の前日」といえる。
3月1日の1日前が2月29日であるかどうかを調べれば、その年がうるう年かどうかがわかる。

数式でいえば、ある年の3月1日(シリアル値)-1 の答えが2月29日であれば「うるう年」。

■処理
日にちの処理には、DATE 関数や DAY 関数など(場合によって、YEAR 関数や MONTH 関数も)を使う。

一つのセルの中でこれらの関数をネストさせて数式を作ると、パッと見て何をしているのかが理解しづらい数式になる。

作業列を使って計算の過程を分けることで、全体として何をしているのかをわかりやすくできる。

1.西暦(数字4桁)を入力する。
ある日にちから YEAR 関数で西暦を抜き出すやり方もある。

2.2月末日(シリアル値)をつくる。
1. の値を DATE 関数の引数に使い、3月1日(シリアル値)をつくって、 1 を引く。

3.DAY 関数で、2月末日の「日」の値を抜き出す。
2.を DAY 関数の引数にする。

4.IFS 関数(あるいは IF 関数)で、3. が 29 であれば「うるう年」とする式をつくる。

Uruudosi_hantei_2

=IFS(C22=29,"うるう年",28,"")

の式は書き方としては、

=IFS(C22=29,"うるう年",TRUE,"")

でも結果は同じになる。
前述の条件を満たさないときは TRUE が成り立つとしてセルが非表示になる。

ただし、この場合は2月末日を判定しているので、条件としては「29である」か「28である」の二通りしかない。
答えが二通りしかないのであれば、

・「29であれば「うるう年」と表示する」、「それ以外であればセルを非表示にする」

と記すよりは、

・「29であれば「うるう年」と表示する」、「28であればセルを非表示にする」

と書いたほうが、どんな条件にもとづいて処理をしているのかがより具体的で理解しやすくなると考えてそうしてある。

| | コメント (0) | トラックバック (0)

Excel で行高を固定して入力する。

この記事は自分用の覚書です。
(Windows 10 Pro 64ビット + Excel2016 Office365 Business サブスクリプション バージョン1711(ビルド8730.2175))

■やりたいこと
セルの書式を「折り返して全体を表示する」にしてあっても、値の貼り付けや入力時に行高が高く変わらないようにする。

■手順
値貼り付けや入力をする前に「行の高さ」を指定しておく。

行を右クリックして「行の高さ」を選択し、固定したい行の高さを入力する。
標準では 18 になっている。同じ 18 で固定したい場合は、あらためて 18 を入力する。

| | コメント (0) | トラックバック (0)

Excel2016 でユーザー設定リストへの登録

この記事は自分用の覚書です。
(Windows 10 Pro 64ビット + Excel2016 Office365 Business サブスクリプション バージョン1711(ビルド8730.2175))

■現象
『ユーザー設定リスト』の「リスト項目」欄に、登録したいリストをコピー貼り付けして「追加」ボタンをクリックすると、次の警告メッセージが表示されてリストを全部登録できない。

「ユーザー設定リストの最大長を超えています。最初の 255 文字のみ保存されます。」

■対処方法
・「リスト項目」欄にコピー貼り付けしない。
・「追加」ボタンをクリックしない。

1. ワークシート上で任意の「列」にリスト項目を用意しておく。
「行」(横)に並べると登録できない。

2. 1. を範囲選択しておいてから『ユーザー設定リスト』の画面を呼び出すか、『ユーザー設定リスト』の画面で「インポート」ボタンの左にあるボタンを押して 1.  の範囲を指定する。

3. 「リストの取り込み元範囲」が正しいことを確認して「インポート」ボタンをクリック。
これでユーザー設定リストが登録される。

OK ボタンをクリックしていって画面を閉じる。

| | コメント (0) | トラックバック (0)

Excel で満年齢を計算する。(DATEDIF関数は使わない)

この記事は自分用の覚書です。
(Windows 8.1 Pro 64ビット + Excel2016 Office365 Business サブスクリプション バージョン1710(ビルド8625.2139))

「今年いくつになるか?」という「満年齢」(生まれた年を 0 として、以後の年の誕生日がきたら 1つ 増える年齢)を求める。

1.YEAR 関数で生年月日から「年」を抜き出す。

2.YEAR 関数と TODAY 関数で今日の日付から「年」を抜き出す。

3. 2. から 1. を引く。これで「今年いくつになる」かがわかる。

満年齢を求める。

「いまいくつなのか」を求める。

本年の誕生日がきていない場合

満年齢から 1 を引く。(満年齢未満ということ。)

「本年の誕生日がきていない」とは、「今日の日付(シリアル値)」が「本年の誕生日(シリアル値)」より小さいということ。
IF 関数または IFS 関数で対応。

・DATE 関数で「本年の誕生日」を生成
DATE(E2,MONTH(C2),DAY(C2))

誕生日を過ぎている場合

「満年齢には達している」ので、そのまま「(翌年の誕生日まで)満年齢をいまの年齢」とするか、「(本年の)満年齢は超えた」と考えて 1 を足して「いまの年齢」とするかはケースバイケース。

| | コメント (0) | トラックバック (0)

より以前の記事一覧