オーロラさんの勉強帳

IT企業勤務。データベース、Excel、Excel VBA、ネットワーク、LinuxなどIT関連のことを主に書いていきます。少しでもお役に立てたら幸いです。

【Excel VBA 練習】必要な列が重複なく存在することを確認するマクロ ~静的配列の練習~

【目次】


※2021/10/12:列の重複の観点が漏れていたのでコードを修正しました。

以下の記事では動的配列を使って、必要な列が存在するかどうか確認するマクロを紹介しています。
auroralights.jp

目的

以下の画像のようなデータの1行目に必要な列が存在するかどうか確認することが目的です。
f:id:auroralights:20211004231647p:plain
応用として、データ集計などのVBAツールを作成する際に、元データに必要な列があるかどうかをチェックするための機能に使えたら良いなと思っています。


<データの定義>

  • データはVBAを記述するブックと同じブックのSheet1に存在します。
  • 1行目がデータの列名になります。
  • データはA1が開始点となります。
  • 今回は「受注番号」「商品コード」「受注日」「納入日」「見積番号」「担当者」の6つの列が存在することを確認します。

必要な列があるかどうか確認するVBAのコード

以下のようなコードを書きました。

Option Explicit

Sub checkCol()

    '配列に必要な列名を格納
    Dim arrCol(5) As String
    arrCol(0) = "受注番号"
    arrCol(1) = "商品コード"
    arrCol(2) = "受注日"
    arrCol(3) = "納入日"
    arrCol(4) = "見積番号"
    arrCol(5) = "担当者"
        
    '最終列の取得
    Dim maxCol As Long: maxCol = Cells(1, Columns.Count).End(xlToLeft).Column
    
    'for文用カウント変数i、j、列の存在・重複確認用の変数k、メッセージ用の変数msgの宣言
    Dim i As Long, j As Long, k As Long
    Dim msg As String
    
    '配列の要素数だけ、A列~最終列のチェックを繰り返す
    For i = LBound(arrCol) To UBound(arrCol)
        For j = 1 To maxCol
            If Cells(1, j) = arrCol(i) Then
                k = k + 1
            End If
        Next j
        
        If k = 1 Then
            msg = msg & arrCol(i) & ":OK" & vbCr
        ElseIf k < 1 Then
            msg = msg & arrCol(i) & "が存在しません" & vbCr
        Else
            msg = msg & arrCol(i) & "が" & k & "列存在。重複しています。" & vbCr
        End If
        k = 0
    Next i
    
    '結果の表示
    MsgBox msg
    
End Sub

考え方

■配列への必要な列名の格納
必要な6つの列名(「受注番号」「商品コード」「受注日」「納入日」「見積番号」「担当者」)を「arrCol」という配列に格納します。

■最終列数の取得
データの最終列(右端の列数)を「maxCol」という変数に格納します。

■for文用カウント変数i、j、列の存在・重複確認用の変数k、メッセージ用の変数msgの宣言
for文用の変数i、j、列の存在・重複確認用の変数k、メッセージ用の変数msgを宣言します。

■for文で配列の要素数分、A列~最終列のチェックを繰り返す
配列arrCol(0)に格納されている列名「受注番号」がSheet1の1行目のA列~最終列までに存在する数だけ変数「k」に1をプラスします。
(存在しなければ1はプラスしません)

kが1ならOK、kが0ならarrCol(0)の列名が存在しない、それ以外ならarrCol(0)の列名が重複しているとメッセージ用の変数msgに格納し、kに0を再設定します。

同じようにarrCol(1)~arrCol(5)に格納されている列名が、1行目のA列~最終列までに存在するかどうかをチェックして、変数msgに結果を継ぎ足します。

■結果の表示
配列arrColに格納したすべての列名が1つずつ存在する場合は、以下のようなメッセージが表示されます。
f:id:auroralights:20211012213639p:plain


配列arrColに格納した列名で、重複する列名や存在しない列名がある場合は、以下のようなメッセージでどの列が重複、存在していないかわかるようにしました。
f:id:auroralights:20211012213813p:plain


以上、お読みいただきありがとうございました。

【Oracle Linux】ホスト名の変更 (hostnamectlコマンド)

Oracle Linux・のホスト名をhostnamectlコマンドで変更する方法を紹介します。
CentOS、Ubuntuの他のLinuxディストリビューションでもhostnamectlコマンドでホスト名を変更することが可能です。

hostnamectlコマンドで現在のホスト名の確認

hostnamectl

f:id:auroralights:20210924202317p:plain

hostnamectlコマンド新しいホスト名を設定

hostnamectl set-hostname 【新しいホスト名】

f:id:auroralights:20210924202405p:plain


hostnamectlコマンドでホスト名が変更されたことを確認

hostnamectl

f:id:auroralights:20210924202837p:plain



以上がhostnamectlコマンドでホスト名の確認、変更をする方法の説明となります。
お読みいただきありがとうございました。

【ビジネススキル】社会人に必要なビジネススキルについて

【目次】

4つのビジネススキルについて

自分のビジネススキルを考える際は、4つのスキルに分けて考えてみると良いです。
4つのスキルとは、土台となる部分の「ベーシックスキル」(図では緑の部分)。
そのベーシックスキルの上にある、「コミュニケーションスキル」、「業務スキル・専門的スキル」、「マネージメントスキル」の3つのスキルです。

f:id:auroralights:20210918205030p:plain

この4つのスキルに分けた考え方は、自分のビジネススキルを整理する際、キャリアを考える際などに役立ちます。
例えば、4つのスキルの中で何が自分の強みで、何が自分の弱みであるかを把握します。
そして、強みをより成長させるために何をすべきなのか、弱みを克服するために何をすべきなのかという風に、自分自身の現状を把握して、今後に向けての方針を決めることができます。
仕事で行き詰った時や、就職や転職など人生の岐路に立たされた時に自分のビジネススキルの棚卸にも使えます。

では、4つのスキルを一つずつ説明していきます。

土台となる『ベーシックスキル』について

仕事をする上、生活をする上で必要不可欠なスキルであり、コミュニケーションスキル、業務スキル、マネージメントスキルの土台となるスキルです。
具体的にどのようなものかというと、以下のようなものが該当します。生まれ持っているものや自分の努力だけでは変えられないものも多くあるのがこのスキルの特徴です。

  • 心身の健康
  • 人間性
  • 外見
  • 地頭の良さ
  • フィジカル・メンタルの強さ
  • 家庭環境
  • プライベート

心身が健康であることは、すべての基本であり、変えることのできないスキルです。健康は一度損なうと元の状態に戻すのは大変苦労します。適度な運動やサプリメント、不調があればすぐに病院行ったり、ストレスをためないようにしたり、健康を維持するために努力が必要です。

人間性は、人当たりの良し・悪し、性格の良し・悪し、困っている人を助ける・助けない、誠実さといった基本的な部分です。

外見は、美男美女の方が有利なことが多いです。美男美女でなくても、清潔感さえあれば問題はないです。
地頭の良さも、地頭が良ければいいですが、劣るのであればコツコツ勉強するしかありません。

フィジカル・メンタルの強さは、強ければ弱い人に比べると負荷の高い仕事もこなせます。また、行動力も変わってきますし、交渉の際にもお客さんに当たり負けしなかったりします。

家庭環境・プライベートは、一人暮らしなのか支えてくれる家族がいるのかだったり、家が裕福なのか・そうでないのかなどでも、精神的な余裕などが変わってきます。

自分にとっては当たり前のことでも、実は強みというか得してる部分な場合もありますよね。例えば、職場が家から近ければ、通勤時間で浮いた時間を別のことに活用できますしね。


私はメンタルがあまり強くないですし、フィジカルもそれほど強くないです。ただし、小柄で華奢なのと柔和な性格なので、お客さんの懐に入りやすいのが自分の強みだと思っています。(もちろん信頼関係は構築した上でです)
心身の健康についても、サプリを飲んだり、少しでも運動をしたりとできる範囲で健康に心がけていますが、足りていないのが正直なところですね。


コミュニケーションスキル

コミュニケーションスキルは、学生時代の面白い話をして笑いをとるようなものではなく、あくまでも仕事を円滑におこなうための他者とのコミュニケーションができるスキルです。
学生時代のコミュニケーションとは全く違うことを注意すべきでしょう。

仕事を円滑におこなうために、上司・同僚・部下、そしてお客様への適切なコミュニケーションができるスキルのことです。
もちろんその上で、面白い話なども交えてコミュニケーションができればいいですが、基本は仕事のためのコミュニケーションであることを意識しましょう。


<学校と会社でのコミュニケーションの違い>

  • 学生時代のコミュニケーション:仲良くなるため
  • 社会人のコミュニケーション:仕事を円滑に進めるため、会社の利益のため


私もコミュニケーションは苦手ですが、仕事と割り切って接しています。
会社に一人や二人、苦手な人がいると思います。その人と仲良くなる必要はありません。仕事と割り切って仕事の会話だけをすればいいのです。
仕事は売上、利益、成果をだすことが目標であり、そのためにコミュニケーションをすると割り切りましょう。


業務スキル・専門的スキル

実務を行うスキルや、商品知識や業務知識などのスキルです。
IT業界でいうと、技術の知識(プログラミングやDatabase、OSなどの知識)や業務の知識(物流、会計、貿易管理 など)が該当します。

このスキルについては、努力に比例して伸びる部分だと思います。実務でわからなかったことを家で学習する、資格を取得するなど、個人の努力次第で成長できるスキルです。


家で学習をしている人は思っているよりかなり少ないです。
そのため、家で15分でも30分でも学習する習慣をつけるだけでも、かなり強みになります。同期と差をつけることも簡単にできます。
私は33歳からIT業界に入りましたが、私よりも長く働いでいる人でも、この程度のスキルなのかと思うことが結構な頻度であります。(自己学習をできていない人をたくさん見てきました)
仕事で分からなかったことを家で勉強する、仕事に関係する資格を取得するだけでかなり職場の人と差をつけることができます。


マネージメントスキル

マネージメントだけでなく、論理的思考法などがこのスキルに含まれます。
「業務スキル・専門的スキル」ばかりに目が行きがちですが、このマネージメントや論理的思考法のスキルはかなり重要です。

マネージャーやリーダーでなくても、仕事とは常に問題・課題があり、それを解決することの連続です。マネージメントや論理的思考法で問題を解決する考え方は早くから訓練、身に着けておくべきです。

そして、このスキルはどの業種でも共通で活用できるものです。


以下の「コンサル1年目が学ぶこと」は、コンサル業界だけではなくあらゆる業界で利用できるビジネスの基本的な考え方が詰まった1冊となっています。
「結論から話す」、「数字とロジックで語る」、「ロジックツリーを使いこなす」、「仮説志向」など仕事で役立てる内容ばかりとなっています。全ビジネスパーソンにおすすめの一冊ですので、読むことをおすすめします。

最後に

4つのスキルはどれも重要であり、それぞれ他のスキルと関係を持っています。
土台となるベーシックスキルの面積が小さければ、その上の3つのスキルも成長させることができません。
自分の強みや弱みの把握、自分の未来を想像して何を伸ばすのかなども考えてみるといいと思います。

お読みいただきありがとうございました。